使用 LangChain 调用本地 DeepSeek API

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})
if isinstance(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" 
)
# 定义⼯具 注意要添加注释
@tool
def add(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" 
)
# 定义⼯具 注意要添加注释
@tool
def add(a: int, b: int) -> int:
	"""Adds a and b."""
	return a + b
@tool
def get_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} 
def tools_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工具调用的底层原理进阶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值