开启左侧

使用 LangChain 调用本地 DeepSeek API

[复制链接]
mazaoxie 发表于 2025-9-7 23:35:32 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
1. 部署DeepSeek模型

确保已经在本地部署了Deepseek模型,例如Ollama进行部署;
2. 安装必要的 Python 库
  1. pip install langchain ollama langchain_community
复制代码
3. 使用 LangChain 调用本地DeepSeek API

3.1 调用方法1

下面是一个完整的示例代码,展示了如何使用 LangChain 调用本地的 DeepSeek API:
  1. from langchain_community.llms import Ollama
  2. from langchain.prompts import PromptTemplate
  3. from langchain.chains import LLMChain
  4. # 创建 Ollama 实例,指定模型名称和本地服务地址
  5. llm = Ollama(model="deepseek-r1:32b", base_url="http://localhost:11434")# 定义提示模板
  6. prompt = PromptTemplate(
  7.     input_variables=["question"],
  8.     template="请回答以下问题:{question}")# 创建 LLM 链
  9. chain = LLMChain(llm=llm, prompt=prompt)# 定义问题
  10. question ="1+3=?"# 调用链进行推理
  11. result = chain.invoke({"question": question})ifisinstance(result,dict):
  12.     result = result.get("text","")# 打印结果print(result)
复制代码
运行结果:



3.2 调用方法2

ChatOpenAI库兼容Deepseek,因此可以使用ChatOpenAI库进行接口调用
pip install langchain-openai
实例化
  1. from langchain_deepseek import ChatDeepSeek
  2. llm = ChatOpenAI(
  3.     model="deepseek-v3",
  4.     openai_api_key="XXXX",
  5.     openai_api_base="XXXXX/v1/",#注意此处url层级到v1
  6.     max_tokens=1024,# 其他参数...)
  7. messages =[("system","您是一个有用的助手,负责将英语翻译成中文。请翻译用户句子。",),("human","I love programming."),]
  8. ai_msg = llm.invoke(messages)
  9. ai_msg.content
复制代码
输出结果:



链接

用户可以将模型与提示模板链接,如下所示:
  1. from langchain_core.prompts import ChatPromptTemplate
  2. prompt = ChatPromptTemplate([("system","您是一个有用的助手,负责将 {input_language} 翻译成 {output_language}。",),("human","{input}"),])
  3. chain = prompt | llm
  4. chain.invoke({"input_language":"英语","output_language":"德语","input":"我喜欢编程。",})
复制代码
运行结果:



4.自定义辅助工具

4.1 简单调用:
  1. import datetime
  2. from langchain.tools import tool
  3. from langchain_openai import ChatOpenAI
  4. # 构建OpenAI客户端
  5. llm = ChatOpenAI(
  6.         model="deepseek-v3",
  7.         openai_api_key="your api key",
  8.         openai_api_base="api url")# 定义⼯具 注意要添加注释@tooldefadd(a:int, b:int)->int:"""Adds a and b."""return a + b
  9. print(add.invoke({"a":11,"b":21}))
复制代码
结果:



4.2 LangChain调用工具
  1. import datetime
  2. from langchain.tools import tool
  3. from langchain_openai import ChatOpenAI
  4. from langchain.tools.render import render_text_description
  5. from langchain_core.prompts import ChatPromptTemplate
  6. from langchain_core.output_parsers import JsonOutputParser
  7. # 构建OpenAI客户端
  8. llm = ChatOpenAI(
  9.         model="deepseek-v3",
  10.         openai_api_key="your api key",
  11.         openai_api_base="api url")# 定义⼯具 注意要添加注释@tooldefadd(a:int, b:int)->int:"""Adds a and b."""return a + b
  12. @tooldefget_current_date():"""获取今天⽇期"""return datetime.datetime.today().strftime("%Y-%m-%d")       
  13. tools =[add, get_current_date]# 构建工具条件和调用描述
  14. rendered_tools = render_text_description(tools)print("rendered_tools:", rendered_tools)# 构建系统提示词
  15. system_prompt =f"""
  16. You are an assistant that has access to the following set of tools. Here are the names and descriptions for each tool:
  17. {rendered_tools}
  18. Given the user input, return the name and input of the tool to use. Return your response as a JSON blob with 'name' and 'arguments' keys."""# 构建输入提示词模板
  19. prompt = ChatPromptTemplate.from_messages([("system", system_prompt),("user","{input}")])# 构建chain以及最后格式化输出
  20. chain = prompt | llm
  21. print(chain.invoke({"input":"what's 11 + 12"}))# 输出所有结果
  22. tool_map ={tool.name: tool for tool in tools}deftools_call(model_output):
  23.     chosen_tool = tool_map[model_output["name"]]return chosen_tool.invoke(model_output["arguments"])# 在链条后面添加JsonOutputParser()和tools_call用来限制输出内容,只输出工具的结果# 链式组合
  24. chain = prompt | llm| JsonOutputParser()| tools_call
  25. print(chain.invoke({"input":"what's 11 + 33"}))print(chain.invoke({"input":"what's the date today?"}))
复制代码
运行结果:



4.3 laggraph调用工具

langgraph.prebuilt.create_react_agent 是 LangGraph 库中的一个预构建函数,位于 langgraph.prebuilt 模块,用于快速创建基于 ReAct(Reasoning + Acting)架构的智能代理。
  1. from langgraph.prebuilt import create_react_agent
  2. from langchain_openai import ChatOpenAI
  3. # 构建OpenAI客户端
  4. llm = ChatOpenAI(
  5.         model="deepseek-v3",
  6.         openai_api_key="your api key",
  7.         openai_api_base="api url")
  8. agent = create_react_agent(
  9. model=llm,
  10. tools=[get_current_date],
  11. prompt="你是一个有用的助手,负责根据用户提出的问题调用对应的工具获得结果后输出",)
  12. result = agent.invoke({"messages":[{"role":"user","content":"今天是几月几日?"}]}print(result["messages"][-1].content)
复制代码
结果:



5.参考链接

LangChain + DeepSeek全流程开发详解
如何进行工具/函数调用
LangChain工具调用的底层原理进阶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )