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

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

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

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

5个看起来像 MacOS 的 Linux 发行版,赶紧收藏!

既想使用 Linux,又想同时使用 Mac ?那么你可以尝试这些 Linux 发行版,你肯定会觉得自己在用 Mac 系统。1. Elementry OSElementry OS 是看起来像 Mac OS 的最好的 Linux 发行版。和 Mac 一样,这个操作系统也是为了保护隐私而设计的。因此你会得...

美国民众负债累累 但今年假期消费者支出仍将创下新高

智通财经APP获悉,在迎接假期之际,许多美国人已经背负了创纪录的信用卡债务。然而,今年假期消费者支出仍将创下新高。根据美国零售联合会(NRF)上周发布的报告,预计今年11月1日至12月31日期间的消费总额将达到创纪录的9795亿至9890亿美元之间。NRF首席经济学家Jack Kleinhenz表示...

USB电池充电基础:应急指南

USB为便携设备供电与其串行通信功能一样,已经成为一种标准应用。如今,USB 供电已经扩展到电池充电、交流适配器及其它供电形式的应用。应用的普及带来的一个显著效果是便携设备的充电和供电可以互换插头和适配器。因此,相对于过去每种装置都采用专用适配器的架构相比,目前的解决方案允许采用多种电源进行充电。毋...

数组、去重、排序、合并、过滤、删除

ES6数字去重 Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] [...new Set([1,2,3,3,4,4])] //[1,2,3,4]2、ES6数字排序 [1,2,3,4].sort(); // [1, 2,3,4],默认是升序...

js中数组filter方法的使用和实现

定义filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。语法var newArray = arr.filter(callback(element[, index[, selfArr]])[, thisArg])参数callback循环数组每个元素时调用的回调函数。回调函...

一文让你彻底搞懂 vue-Router

路由是网络工程里面的专业术语,就是通过互联把信息从源地址传输到目的地址的活动。本质上就是一种对应关系。分为前端路由和后端路由。后端路由:URL 的请求地址与服务器上的资源对应,根据不同的请求地址返回不同的资源。前端路由:在单页面应用中,根据用户触发的事件,改变URL在不刷新页面的前提下,改变显示内容...