测试面向开发者的大模型手册 - 通过LangChain使用deepseek
到了这一章节,
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:
- 安装langchain_deepseek
pip3 install langchain_deepseek
- 把脚本中对应的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"
)
- 直接调度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 做提示。
- 如何使用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)
效果如下:
海盗变得彬彬有礼了。
- 再用海盗的语言格式,来彬彬有礼的回复海盗,如下
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)