j动态加载网站开发广州网络推广招聘
2026/2/19 8:19:47 网站建设 项目流程
j动态加载网站开发,广州网络推广招聘,最新创建的网站,门户网站如何帮企业做宣传简单创建智能体并调用可参考官方文档地址#xff1a;https://docs.langchain.com/oss/python/langchain/agents 智能体会遵循 ReAct#xff08;“推理行动”#xff09;模式#xff0c;交替进行简短的推理步骤和针对性工具调用#xff0c;并将所得观察…简单创建智能体并调用 可参考官方文档地址https://docs.langchain.com/oss/python/langchain/agents 智能体会遵循 ReAct“推理行动”模式交替进行简短的推理步骤和针对性工具调用并将所得观察反馈到后续决策中直到能够给出最终答案。 第一步初始化测试用的工具 fromlangchain_core.toolsimporttoolfrompydanticimportBaseModel,FieldclassAddInputArgs(BaseModel):a:floatField(description第一个数字,example1)b:floatField(description第二个数字,example2)tool(description对输入的两个数字执行加法运算,args_schemaAddInputArgs,return_directFalse)defadd(a,b)-float:returnab 第二步初始化大模型 这里直接初始化一个千问大模型 importosfromlangchain_openaiimportChatOpenAIfromdotenvimportload_dotenv load_dotenv()llmChatOpenAI(modelqwen-max-latest,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY),streamingTrue,) 第三步创建智能体 通过 langchian.agent的create_agent方法 fromlangchain.agentsimportcreate_agent agentcreate_agent(modelllm,tools[add],system_prompt你是一个擅长计算的专家你会使用数学工具完成计算) 第四步调用智能体 resultagent.invoke(input{messages:[{role:user,content:请计算12的值}]})美化 打印result的消息列表formsginresult[messages]:ttype(msg).__name__iftHumanMessage:print(f{msg.content})eliftAIMessage:ifhasattr(msg,tool_calls)andmsg.tool_calls:fortoolinmsg.tool_calls:args, .join(f{k}{v}fork,vintool[args].items())print(f 调用{tool[name]}({args}))elifmsg.content:print(f{msg.content})eliftToolMessage:print(f{msg.name}→{msg.content})控制台输出内容 请计算12的值 调用 add(a1,b2)add→3.0 计算结果为\(123\)。使用Saver保存会话消息langchian的对话消息有多种保存方式可以使用redis、MongoDB、或者写一个自定义saver保存到本地都是可以的在早期可以使用社区提供的ChatMessageHistory 来实现简单的会话消息保存保存和提取的动作都需要自己维护后期官方提供了MemorySaver 这是完整的会话管理系统langchian会自动处理一起案例代码 agent会话保存 可以使用临时内存保存、也可以使用redis、MongoDB甚至是自己实现本地文件保存importasyncioimportjsonimportos from dotenvimportload_dotenv from langchain_core.messagesimportSystemMessage, HumanMessage, AIMessage from langchain_core.runnablesimportRunnableConfig from langchain.agentsimportcreate_agent load_dotenv() 第一步定义Saver from langgraph.checkpoint.memoryimportMemorySaver memory_saverMemorySaver() 第二步初始化大模型 from langchain_openaiimportChatOpenAI llmChatOpenAI(modelqwen-max-latest,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY),streamingTrue,) 第三步创建react Agent 并传入checkpointer agentcreate_agent(modelllm,checkpointermemory_saver,debugTrue,system_promptSystemMessage(content你是3DM的游戏助手专注游戏问题),) 第四步 创建RunnableConfig,用来传入ThreadId 也就是会话标识 configRunnableConfig(configurable{thread_id:1},recursion_limit100) 第五步 流式调用agent连续对话 async def run_conversation(): print(*50)print(游戏助手已启动输入 exit 退出输入 history 查看历史记录)print(*50)conversation_history[]# 本地存储对话历史whileTrue: user_inputinput(\n用户)# 退出命令ifuser_input.lower()exit:print(\n对话结束)breakprint(\n助手,end,flushTrue)try:# 流式异步调用大模型asyncforchunkinagent.astream(input{messages:user_input},configconfig):# 根据你提供的格式解析chunkawait process_chunk(chunk)except Exception as e: print(f\n[错误] 调用大模型时出错: {e})importtraceback traceback.print_exc()print()# 换行async def process_chunk(chunk):处理流式返回的chunkifisinstance(chunk, dict):# 处理 [values] 类型的chunkifmessagesinchunk: print(f\n[DEBUG] 收到消息chunk:)formsginchunk[messages]:ifhasattr(msg,content): print(f[DEBUG] 消息类型: {type(msg).__name__})print(f[DEBUG] 消息内容: {msg.content[:100]}...)# 只显示前100字符# 处理 [updates] 类型的chunkelifmodelinchunk: model_updateschunk.get(model,{})ifmessagesinmodel_updates:formsginmodel_updates[messages]:ifisinstance(msg, AIMessage)and msg.content:# 这是AI的回复内容打印出来print(msg.content,end,flushTrue)elifisinstance(msg, HumanMessage): print(f\n[DEBUG] 用户消息: {msg.content})else: print(f\n[DEBUG] 其他消息类型: {type(msg).__name__})# 打印完整的chunk结构用于调试else: print(f\n[DEBUG] 完整chunk结构:)print(json.dumps(chunk,indent2,defaultstr,ensure_asciiFalse)[:500]...)elifhasattr(chunk,__dict__):# 处理对象类型的chunkprint(f\n[DEBUG] 对象chunk: {type(chunk).__name__})ifhasattr(chunk,content): print(f[DEBUG] 内容: {chunk.content})ifisinstance(chunk, AIMessage): print(chunk.content,end,flushTrue)elifisinstance(chunk, str):# 直接字符串内容print(chunk,end,flushTrue)else:# 其他类型print(f\n[DEBUG] 未知chunk类型: {type(chunk)})print(f[DEBUG] 值: {chunk})if__name____main__:# 运行对话asyncio.run(run_conversation())

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询