1.安装langchian

pip install langchain langchain-deepseek

使用deepseek需要API密钥,你可以去DeepSeek开放平台获取API密钥。然后保存到电脑的系统环境变量里即可。

变量:DEEPSEEK_API_KEY,值:你的密钥

保存好后,它就会自动识别到你的API密钥,然后就可以开始使用deep seek啦。

2.定义一个agent

from langchain.agents import create_agent
from langchain_core.messages import content
from langchain_deepseek import ChatDeepSeek
from tool import get_city_time

# your agent here
llm=ChatDeepSeek(
    model='deepseek-v4-flash'
)

agent=create_agent(
    model=llm,
    system_prompt="""
    你是一个有用的智能小助手。
    """,
    tools=[get_city_time]
)

agent里的工具定义如下:

from langchain.tools import tool
from datetime import datetime
from zoneinfo import ZoneInfo
# create your tools
@tool
def get_city_time(city:str) ->dict:
    """ 获取某一个城市的当前时间
    
    Args:
        city:用户询问的城市名称

    """
    return {
        'city':city,
        'time':datetime.now(ZoneInfo('Asia/Shanghai'))
    }

3.开始使用Event streaming

response=agent.stream_events(
    {
        "messages":[
            {"role":"user",
            "content":"你好呀,你知道昆明现在几点了吗?"}
        ]
    },
    version="v3"
)
for message in response.messages:
    if message:
        print("-"*20+"思考内容"+"-"*20)
        for reasoning in message.reasoning:
                print(reasoning, end="", flush=True)
        print()

        print("-"*20+"回答内容"+"-"*20)
        for delta in message.text:
                print(delta, end="", flush=True)
        print()

        
        tool_msg=message.tool_calls.get()
        if tool_msg:
            print("-"*20+"工具调用"+"-"*20)
            print(tool_msg)

Event streaming里具体由哪些变量,放个简图给大家。

具体内容,可以访问Event streaming - Docs by LangChain查看。

4.效果如下

--------------------思考内容--------------------
用户想知道昆明的当前时间。我可以使用 get_city_time 工具来获取昆明的当前时间。
--------------------回答内容--------------------
你好呀!当然知道啦,让我帮你查一下昆明现在的具体时间~😊
--------------------工具调用--------------------
[{'type': 'tool_call', 'id': 'call_00_s9mk9mpNJCmLmR4xTWO20790', 'name': 'get_city_time', 'args': {'city': '昆明'}}]
--------------------思考内容--------------------
我已经获取到了昆明的当前时间。让我把信息整理一下呈现给用户。昆明的时间是2026年7月8日 22:14:59。虽然昆明在地理上属于东七区,但中国全国统一使用北京时间(东八区),所以昆明的时间也是和北京时间一样的。
国全国统一使用北京时间(东八区),所以昆明的时间也是和北京时间一样的。
--------------------回答内容--------------------
国全国统一使用北京时间(东八区),所以昆明的时间也是和北京时间一样的。
--------------------回答内容--------------------
国全国统一使用北京时间(东八区),所以昆明的时间也是和北京时间一样的。
国全国统一使用北京时间(东八区),所以昆明的时间也是和北京时间一样的。
--------------------回答内容--------------------
查到啦!昆明现在的具体时间是:

📅 **日期**:2026年7月8日(星期四)
⏰ **时间**:**22:14**(晚上十点十四分)

虽然昆明在地理位置上是东七区,但咱们中国全国统一使用北京时间(东八区),所以昆明的时间和其他城市(比如北京)是一样的哦~现在已 经是晚上了,如果是在昆明的话,记得早点休息,注意身体呀!😄🌙

因为循环出的Event streaming中的每一个message可能同时包含reasoning、tool_calls、text,或者都没有,使用要先判断一下是否由内容;同时,message.tool_calls 返回的是流式工具调用参数chunks,使用循环这个可能会产生大量的重复的 chunk 数据,所以推荐使用获取最终完整的工具调用:message.tool_calls.get()获取一次性的完整信息。print()则是为了避免message里由多个内容导致粘黏在一起。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐