智能体三核心,模型工具记忆开发流程一般是定义模型;定义工具;添加记忆管理;然后定义智能体;测试以下是黑马的菜品识别系统agent# 加载环境变量 from dotenv import load_dotenv from langchain_core.messages import AIMessage load_dotenv() from langchain.chat_models import init_chat_model import os # 多模态模型 multimodal_model init_chat_model( modelqwen3-omni-flash, # 模型名称这里选择qwen3.5-plus这是一个多模态模型支持图片、文本、音频、视频 model_provideropenai ) from langchain_tavily import TavilySearch # web搜索工具使用tavily作为web搜索工具 web_search TavilySearch( max_results5, topicgeneral ) from langgraph.checkpoint.sqlite import SqliteSaver import sqlite3 # 初始化checkpointer 记忆管理 checkpointer SqliteSaver(sqlite3.connect(resources/personal_chief.db, check_same_threadFalse)) # 自动建表 checkpointer.setup() from langchain.agents import create_agent system_prompt 你是一名私人厨师。收到用户提供的食材照片或清单后请按以下流程操作 1.识别和评估食材若用户提供照片首先辨识所有可见食材。基于食材的外观状态评估其新鲜度与可用量整理出一份“当前可用食材清单”。 2.智能食谱检索优先调用 web_search 工具以“可用食材清单”为核心关键词查找可行菜谱。 3.多维度评估与排序从营养价值和制作难度两个维度对检索到的候选食谱进行量化打分并根据得分排序制作简单且营养丰富的排名靠前。 4.结构化方案输出把排序后的食谱整理为一份结构清晰的建议报告要包含食谱信息、得分、推荐理由帮助用户快速做出决策。 请严格按照流程优先调用 web_search 工具搜索食谱再搜索不到的情况下才能自己发挥。 agent create_agent( modelmultimodal_model, tools[web_search], system_promptsystem_prompt, checkpointercheckpointer ) from langchain.messages import HumanMessage multimodal_message HumanMessage( content[ {type: text, text: 帮我看看这些食材能做些什么}, # 正确格式image_url不是 image { type: image_url, image_url: { url: https://img95.699pic.com/photo/60024/7565.jpg_wh860.jpg } } ]) config {configurable: {thread_id: new_chat_124}} #注意这个tread_id,重复了就会导致用了别的记忆 response agent.invoke({messages: [multimodal_message]}, config) # 友好打印 for message in response[messages]: message.pretty_print() response agent.invoke( {messages: [HumanMessage(content我喜欢第3道菜可以说的更详细点吗)]}, config ) # 友好打印 response[messages][-1].pretty_print()可见是有记忆的用LangSmith进行部署,首先注册LangSmith复制这个apikey保存.env