1. 部署DeepSeek模型
确保已经在本地部署了Deepseek模型,例如Ollama进行部署;
2. 安装必要的 Python 库
- pip install langchain ollama langchain_community
复制代码 3. 使用 LangChain 调用本地DeepSeek API
3.1 调用方法1
下面是一个完整的示例代码,展示了如何使用 LangChain 调用本地的 DeepSeek API:- from langchain_community.llms import Ollama
- from langchain.prompts import PromptTemplate
- from langchain.chains import LLMChain
- # 创建 Ollama 实例,指定模型名称和本地服务地址
- llm = Ollama(model="deepseek-r1:32b", base_url="http://localhost:11434")# 定义提示模板
- prompt = PromptTemplate(
- input_variables=["question"],
- template="请回答以下问题:{question}")# 创建 LLM 链
- chain = LLMChain(llm=llm, prompt=prompt)# 定义问题
- question ="1+3=?"# 调用链进行推理
- result = chain.invoke({"question": question})ifisinstance(result,dict):
- result = result.get("text","")# 打印结果print(result)
复制代码 运行结果:

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

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

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

4.2 LangChain调用工具
- import datetime
- from langchain.tools import tool
- from langchain_openai import ChatOpenAI
- from langchain.tools.render import render_text_description
- from langchain_core.prompts import ChatPromptTemplate
- from langchain_core.output_parsers import JsonOutputParser
- # 构建OpenAI客户端
- llm = ChatOpenAI(
- model="deepseek-v3",
- openai_api_key="your api key",
- openai_api_base="api url")# 定义⼯具 注意要添加注释@tooldefadd(a:int, b:int)->int:"""Adds a and b."""return a + b
- @tooldefget_current_date():"""获取今天⽇期"""return datetime.datetime.today().strftime("%Y-%m-%d")
- tools =[add, get_current_date]# 构建工具条件和调用描述
- rendered_tools = render_text_description(tools)print("rendered_tools:", rendered_tools)# 构建系统提示词
- system_prompt =f"""
- You are an assistant that has access to the following set of tools. Here are the names and descriptions for each tool:
- {rendered_tools}
- 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."""# 构建输入提示词模板
- prompt = ChatPromptTemplate.from_messages([("system", system_prompt),("user","{input}")])# 构建chain以及最后格式化输出
- chain = prompt | llm
- print(chain.invoke({"input":"what's 11 + 12"}))# 输出所有结果
- tool_map ={tool.name: tool for tool in tools}deftools_call(model_output):
- chosen_tool = tool_map[model_output["name"]]return chosen_tool.invoke(model_output["arguments"])# 在链条后面添加JsonOutputParser()和tools_call用来限制输出内容,只输出工具的结果# 链式组合
- chain = prompt | llm| JsonOutputParser()| tools_call
- 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)架构的智能代理。- from langgraph.prebuilt import create_react_agent
- from langchain_openai import ChatOpenAI
- # 构建OpenAI客户端
- llm = ChatOpenAI(
- model="deepseek-v3",
- openai_api_key="your api key",
- openai_api_base="api url")
- agent = create_react_agent(
- model=llm,
- tools=[get_current_date],
- prompt="你是一个有用的助手,负责根据用户提出的问题调用对应的工具获得结果后输出",)
- result = agent.invoke({"messages":[{"role":"user","content":"今天是几月几日?"}]}print(result["messages"][-1].content)
复制代码 结果:

5.参考链接
LangChain + DeepSeek全流程开发详解
如何进行工具/函数调用
LangChain工具调用的底层原理进阶 |