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

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

ruisui883个月前 (03-19)技术分析11

到了这一章节,
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” 的相关文章

Excel VBA 主界面/一步一步带你设计【收费管理系统】02

本文于2023年5月14日首发于本人同名公众号,更多文章案例请关注微信公众号:Excel活学活用!☆本期内容概要☆用户窗体设置:主界面、主页设计上期我们分享了EXCEL读取ACCESS数据库表,实现系统登录的功能【Excel VBA 访问带密码保护的Access数据库/用户窗体设置/EXCEL用户+...

分享15个基于Vue3.0全家桶的优秀开源项目

大家好,我是 Echa。今天来分享 15 个基于 Vue3.0 全家桶的优秀开源项目!1. Vue Admin Bettergithub : https://github.com/chuzhixin/vue-admin-bettervue admin better 对比其他来源 admin 框架有如...

尤雨溪:细聊 Vue 的现在与未来

大家好,我是 Echa。创作不易,喜欢的老铁们转发加个关注,点个赞,速速收藏,谢谢!另外咱们一起回顾一下Vue 优秀开源项目:12个又简单又实用的开源项目及组件推荐13个又热门又实用的Vue开源宝典库推荐7个Vue 3的高颜值UI组件库分享15个基于Vue3.0全家桶的优秀开源项目推荐10个基于Vu...

什么是同步通信?什么是异步通信?它们有什么区别?

串行通信一般又分为同步和异步通信,同步通信需要同步时钟信号,而异步通信则不需要同步时钟信号。同步通信:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。异步通信:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。同步通信与异步通信有什么区别呢?1、同步通信要求接收端...

并列双缸之同步和异步

并列双缸引擎,分为同步双缸和异步双缸1 并列同步引擎即?360°曲轴?相位?,就是将一个大的缸体,分为两个小的缸体。并且它们的活塞是同上同下运行的,虽然它们的机械结构保持了一致,但他们并不是真正意义上的同步工作,因为?它们?是?异步?点火?的?,例如,如果A缸正在点火,那么B缸就处于停功状态。理论上...

前端框架 Vue 不要一开始就用脚手架~Axios 中的GET、POST请求

作为后端攻城狮,写前端代码是一种什么体验?相信不少人和 @Python大星 一样,有写过前端代码的经历。记录一下,Vue 框架开发中“啼笑皆非”的故事,非专业前端人员,该案例无 css 美化,引起不适,请见谅,如有不当之处,请指出,不甚感激!1、什么是 Axios ?Vue2.0之后,尤雨溪推荐大家...