安装langchain首先你要安装好langchainpip install langchain langchain-openai langchain-deepseek接下来正式开始创建一个简单的agentfromlangchain.agentsimportcreate_agentfromlangchain_deepseekimportChatDeepSeekfromtoolimportget_city_time# create your agent instance herellmChatDeepSeek(modeldeepseek-v4-flash,temperature0.2)defagent_instance(question:str):agentcreate_agent(modelllm,system_prompt 你是一个专业的智能小助手。 ,tools[get_city_time,])responseagent.invoke({messages:[{role:user,content:question}]})print(*40完整对话记录*40)fori,msginenumerate(response[messages]):msg_typetype(msg).__name__print(f\n{*20}第{i1}条消息:{msg_type}{*20})# 1. 用户消息ifmsg_typeHumanMessage:print(f【用户提问】\n{msg.content})# 2. AI消息elifmsg_typeAIMessage:# 思考内容reasoningmsg.additional_kwargs.get(reasoning_content)ifreasoning:print(f【思考内容】\n{reasoning})# AI回答内容ifmsg.content:print(f【AI回答】\n{msg.content})# 工具调用ifmsg.tool_calls:print(f【工具调用】)fortcinmsg.tool_calls:print(f 工具:{tc[name]})print(f 参数:{tc[args]})print(f 调用ID:{tc[id]})# Token消耗token_usagemsg.response_metadata.get(token_usage)iftoken_usage:print(f【Token消耗】)print(f 输入:{token_usage.get(prompt_tokens)})print(f 输出:{token_usage.get(completion_tokens)})print(f 总计:{token_usage.get(total_tokens)})print(f 缓存命中的输入: {token_usage.get(prompt_tokens_details, {}).get(cached_tokens)})# 其他元信息print(f【元信息】)print(f 模型:{msg.response_metadata.get(model_name)})print(f 结束原因:{msg.response_metadata.get(finish_reason)})# 3. 工具返回结果elifmsg_typeToolMessage:print(f【工具返回】\n{msg.content})print(f 工具名:{msg.name})# 4. 其他类型预留else:print(f【内容】\n{msg.content})用的是 LangChain 的 BaseMessage 类型这些字段都是标准属性直接通过 . 访问即可{messages:[HumanMessage(content北京的时间现在是多少,additional_kwargs{},response_metadata{},id16642f22-0ccd-428e-97f5-a09727697813),AIMessage(content好的我来查询一下北京当前的时间。,additional_kwargs{refusal: None,reasoning_content:用户想知道北京当前的时间。我可以调用get_city_time工具来获取北京的时间。},response_metadata{token_usage:{completion_tokens: 72,prompt_tokens: 298,total_tokens: 370,completion_tokens_details:{accepted_prediction_tokens: None,audio_tokens: None,reasoning_tokens: 18,rejected_prediction_tokens: None},prompt_tokens_details:{audio_tokens: None,cached_tokens: 256},prompt_cache_hit_tokens: 256,prompt_cache_miss_tokens: 42},model_provider:deepseek,model_name:deepseek-v4-flash,system_fingerprint:fp_8b330d02d0_prod0820_fp8_kvcache_20260402,id:fcf8e9c3-7261-474b-a818-a3adb6b33caf,finish_reason:tool_calls,logprobs: None},idlc_run--019f3ce3-9712-7582-98f7-3b1eab56b112-0,tool_calls[{name:get_city_time,args:{city:北京},id:call_00_HRU0VuqjCqNvriLVANVi6836,type:tool_call}],invalid_tool_calls[],usage_metadata{input_tokens: 298,output_tokens: 72,total_tokens: 370,input_token_details:{cache_read: 256},output_token_details:{reasoning: 18}}),ToolMessage(content{city: 北京, time: datetime.datetime(2026, 7, 7, 22, 2, 57, 890230, tzinfozoneinfo.ZoneInfo(keyAsia/Shanghai))},nameget_city_time,idc5e10232-97b1-469b-8686-cbd2862945c7,tool_call_idcall_00_HRU0VuqjCqNvriLVANVi6836),AIMessage(content北京当前的时间是 **2026年7月7日 22:02晚上10点02分**。北京属于东八区Asia/Shanghai这就是标准的北京时间。,additional_kwargs{refusal: None,reasoning_content:北京的时间是2026年7月7日 22:02:57。让我用友好的方式告诉用户。},response_metadata{token_usage:{completion_tokens: 67,prompt_tokens: 432,total_tokens: 499,completion_tokens_details:{accepted_prediction_tokens: None,audio_tokens: None,reasoning_tokens: 24,rejected_prediction_tokens: None},prompt_tokens_details:{audio_tokens: None,cached_tokens: 256},prompt_cache_hit_tokens: 256,prompt_cache_miss_tokens: 176},model_provider:deepseek,model_name:deepseek-v4-flash,system_fingerprint:fp_8b330d02d0_prod0820_fp8_kvcache_20260402,id:42edd178-1795-46db-a934-5b0b62f74eb5,finish_reason:stop,logprobs: None},idlc_run--019f3ce3-9de3-7521-bd60-646d64c3efcf-0,tool_calls[],invalid_tool_calls[],usage_metadata{input_tokens: 432,output_tokens: 67,total_tokens: 499,input_token_details:{cache_read: 256},output_token_details:{reasoning: 24}})]}结果展示agent_instance(北京的时间现在是多少) 第1条消息: HumanMessage 【用户提问】北京的时间现在是多少 第2条消息: AIMessage 【思考内容】用户想知道北京当前的时间。我可以使用get_city_time工具来获取北京的时间。【AI回答】好的我来查一下北京当前的时间。【工具调用】工具: get_city_time参数: {‘city’: ‘北京’}调用ID: call_00_ZTbgenMF0JksDfbkeGC94507【Token消耗】输入: 298输出: 72总计: 370缓存命中的输入: 256【元信息】模型: deepseek-v4-flash结束原因: tool_calls 第3条消息: ToolMessage 【工具返回】{‘city’: ‘北京’, ‘time’: datetime.datetime(2026, 7, 7, 22, 6, 8, 185283, tzinfozoneinfo.ZoneInfo(key‘Asia/Shanghai’))}工具名: get_city_time 第4条消息: AIMessage 【思考内容】北京当前时间是2026年7月7日 22:06:08时区是Asia/Shanghai北京时间UTC8。【AI回答】北京当前的准确时间是2026年7月7日星期二⏰22:06:08即晚上10点06分左右属于北京时间东八区UTC8。【Token消耗】输入: 432输出: 80总计: 512缓存命中的输入: 384【元信息】模型: deepseek-v4-flash结束原因: stop