当前位置:首页 > 技术分析 > 正文内容

测试面向开发者的大模型手册 - 通过LangChain使用deepseek

ruisui881个月前 (03-19)技术分析5

到了这一章节,
https://datawhalechina.github.io/llm-cookbook/#
/C3/2.%20%E6%A8%A1%E5%9E%8B%E3%80%81%E6%8F%90%E7%A4%BA%E5%92%8C%E8%A7%A3%E6%9E%90%E5%99%A8%20Models,
%20Prompts%20and%20Output%20Parsers


发现没法往下走了,最大的原因是cookbook用的是langchain 的老框架调用 openai 的语法,而我这边只有Deepseek api。

出错现象如下:cookbook 用例输出的时候,用的是LangChain 0.0.10。

没办法,只有自己弄了。


--------------------------

最新的langchain 调用 Deepseek 的框架在这里:

https://python.langchain.com/api_reference/deepseek/chat_models/langchain_deepseek.chat_models.ChatDeepSeek.html


参考上面文章我们需要重新部署deepseek langchain的相关api:

  1. 安装langchain_deepseek

pip3 install langchain_deepseek

  1. 把脚本中对应的api 做一个改变
llm = ChatDeepSeek(
    model="deepseek-v3",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    api_key="sk-oupXjBXQV23uZm4K5qIv07xvegQmr26JkEmRktpOyW**",
    api_base="https://api.lkeap.cloud.tencent.com/v1"
)


  1. 直接调度LLM 模型的脚本案例:

如下代码所示所示,

1 ) 需要把api_base 改为对应的公有云的api接口(这里改为腾讯云)

2) 输入API-key 和对应的模型,这里选择了deepseek-v3

from langchain_deepseek import ChatDeepSeek

llm = ChatDeepSeek(
    model="deepseek-v3",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    api_key="sk-oupXjBXQV23uZm4K5qIv07x***",
    api_base="https://api.lkeap.cloud.tencent.com/v1"
)

"""
# 配置 DeepSeek 模型
llm = ChatOpenAI(
    model_name="deepseek-v3",  # 使用 DeepSeek 的模型名称
    openai_api_key=os.getenv("DEEPSEEK_API_KEY"),
    openai_api_base="https://api.lkeap.cloud.tencent.com/v1"  # DeepSeek 的 API 地址
)
"""

input = "请评价 Swift 这门语言,200 个字以内"

# 创建对话模板
messages = [
    ("system", "你是世界级技术专家"),
    ("user", "请评价 Swift 这门语言,200 个字以内")
]


# 构建对话链
response =llm.invoke(messages)

print(response.content)

执行效果如下:


模型调度成功了,cookbook里面要使用prompt 做提示。


  1. 如何使用template 模版来实现提示的能力

这个也是OK的,代码如下:

from langchain_deepseek import ChatDeepSeek
from langchain_core.prompts import ChatPromptTemplate

llm = ChatDeepSeek(
    model="deepseek-v3",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    api_key="sk-oupXjBXQV23uZm4K5qIv07xvegQmr26J***",
    api_base="https://api.lkeap.cloud.tencent.com/v1"
)


template_string = """把由三个反引号分隔的文本\
翻译成一种{style}风格。\
文本: ```{text}```
"""


prompt = ChatPromptTemplate.from_template(template_string)

print("\n", prompt.messages[0].prompt)


customer_style = """正式普通话 \
用一个平静、尊敬的语气
"""

customer_email = """
嗯呐,我现在可是火冒三丈,我那个搅拌机盖子竟然飞了出去,把我厨房的墙壁都溅上了果汁!
更糟糕的是,保修条款可不包括清理我厨房的费用。
伙计,赶紧给我过来!
"""

customer_messages = prompt.format_messages(
                    style=customer_style,
                    text=customer_email)

# 构建对话链
chain = prompt | llm

response = llm.invoke(customer_messages)

print(response.content)

效果如下:

海盗变得彬彬有礼了。



  1. 再用海盗的语言格式,来彬彬有礼的回复海盗,如下
from langchain_deepseek import ChatDeepSeek
from langchain_core.prompts import ChatPromptTemplate

llm = ChatDeepSeek(
    model="deepseek-v3",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    api_key="sk-oupXjBXQV23uZm4K5qIv07xvegQmr2**",
    api_base="https://api.lkeap.cloud.tencent.com/v1"
)


template_string = """把由三个反引号分隔的文本\
翻译成一种{style}风格。\
文本: ```{text}```
"""


prompt = ChatPromptTemplate.from_template(template_string)

print("\n", prompt.messages[0].prompt)

service_reply = """嘿,顾客, \
保修不包括厨房的清洁费用, \
因为您在启动搅拌机之前 \
忘记盖上盖子而误用搅拌机, \
这是您的错。 \
倒霉! 再见!
"""

service_style_pirate = """\
一个有礼貌的语气 \
使用海盗风格\
"""

customer_messages = prompt.format_messages(
                    style=service_style_pirate,
                    text=service_reply)

# 构建对话链
chain = prompt | llm

response = llm.invoke(customer_messages)

print(response.content)



扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2885.html

分享给朋友:

“测试面向开发者的大模型手册 - 通过LangChain使用deepseek” 的相关文章

Slackware 15.0?发布:历史最久且在维护的Linux发行版本

Slackware 14.0 于 2012 年发布,在经过了数年的等待之后 Slackware 15.0 发行版本于今天正式发布。Slackware 于 1993 年发布,是目前历史最悠久、且仍在维护的 Linux 发行版本。Slackware 15.0 在去年进入测试阶段,在发布几个候选版本之后终...

Linux世界的多样性:yum和apt的对比,让你感受不同发行版的特色

yum和apt是两种常用的Linux软件包管理器,它们都可以用来安装、更新和删除软件包。但是,它们之间也有一些重要的区别,本文将对它们进行分析对比。yum是Yellowdog Updater Modified的缩写,它是基于RPM(Red Hat Package Manager)的软件包管理器,主要...

Ubuntu Linux 24.04 LTS发行版现已开放下载

IT之家 4 月 25 日消息,Ubuntu 24.04 长期支持版(LTS)“Noble Numbat” 现已发布,有需要的用户请通过官网下载发行版 ISO 镜像进行安装。Ubuntu 24.04 采用了 Linux 6.8 内核,可利用 Netplan 在桌面上配置网络连接,还配备了现代化的桌面...

亚马逊推出 Amazon Linux 2023 发行版,专为 AWS 云进行优化

稿源:IT之家3 月 19 日消息,本周早些时候,亚马逊宣布推出其第三代 Linux 发行版 Amazon Linux 2023(AL2023)。亚马逊表示,该版本将带来高安全性标准、可预测的生命周期和确定性更新。Amazon Linux 2023 针对 Amazon EC2 进行了优化,与最新的...

总结了Vue3的七种组件通信方式,别再说不会组件通信了

写在前面本篇文章是全部采用的<script setup>这种组合式API写法,相对于选项式来说,组合式API这种写法更加自由,具体可以参考Vue文档对两种方式的描述。本篇文章将介绍如下七种组件通信方式:propsemitv-modelrefsprovide/injecteventBusv...

「2022」打算跳槽涨薪,必问面试题及答案——VUE篇

1、为什么选择VUE,解决了什么问题?vue.js 正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另外一方面,当与现代化工具链以及各种支持类库结合使用时,vu...