要用mistral ai构建具备记忆、工具调用和多步推理能力的ai应用,必须依赖langchain的链式编排、内存管理、提示工程与工具集成能力;需配置api密钥、安装langchain-mistralai等依赖、设置.env文件、选择合适模型(如mistralchatmodel)、启用json响应格式、定义含{history}和{input}的提示模板、配置conversationbufferwindowmemory等对话内存、组装conversationchain,并通过tool封装外部功能(描述须英文),最后用agentexecutor驱动自主调用。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想用Mistral AI模型快速搭建具备记忆、工具调用和多步推理能力的AI应用,而不是只写几行代码调个API就完事——这需要LangChain提供的链式编排、内存管理、提示工程和工具集成能力,缺一不可。
准备Mistral API密钥与基础环境
打开Mistral AI控制台,登录后进入API Keys页面,点击“Create new API key”,复制生成的密钥。该密钥需在后续所有Python脚本中使用,【切勿硬编码在源码中】。
新建一个Python 3.10+虚拟环境,执行:pip install -U langchain-mistralai langchain-community python-dotenv。其中langchain-community是调用外部工具(如搜索、数据库)所必需的依赖。
在项目根目录创建.env文件,写入:MISTRAL_API_KEY=sk-xxx。LangChain会自动读取该变量,避免每次初始化模型都手动传参。
初始化Mistral大模型实例
方法一:使用MistralChatModel(推荐用于对话场景)
导入并初始化:from langchain_mistralai import MistralChatModel; llm = MistralChatModel(model="mistral-large-latest", temperature=0.3)。这个模型支持128K上下文,适合长对话和复杂推理任务。
方法二:使用MistralAI(适用于传统文本生成)
from langchain_mistralai import MistralAI; llm = MistralAI(model="open-mistral-7b", max_tokens=512)。注意:7B版本不支持函数调用和结构化输出,仅适合轻量级摘要或改写。
方法三:指定响应格式为JSON(关键步骤)
若需模型返回严格JSON结构(例如工具调用参数),必须显式启用response_format={"type": "json_object"},否则Mistral默认输出纯文本,LangChain无法解析成字典对象。
构建带记忆的多轮对话链
第一步:定义提示模板
使用PromptTemplate封装系统指令和历史记录占位符。模板必须包含{history}和{input}两个变量,LangChain的内存机制依赖此约定。
第二步:配置对话内存
选择ConversationBufferWindowMemory(k=3),它只保留最近3轮交互,防止token超限;若需长期记忆,改用ConversationSummaryBufferMemory,但需额外配置LLM做摘要压缩。
第三步:组装链
from langchain.chains import ConversationChain; chain = ConversationChain(llm=llm, prompt=prompt, memory=memory, verbose=True)。运行chain.invoke({"input": "你好"})即可获得带上下文感知的回复。
接入外部工具实现自主行动
LangChain中的Tool必须是可调用对象,且需提供name、description和func三个属性。Mistral Large模型能自动识别这些字段并决定是否调用。
例如封装一个天气查询工具:
from langchain.tools import Tool; def get_weather(city): return f"{city}当前晴,26℃"; weather_tool = Tool(name="weather", description="根据城市名查询实时天气", func=get_weather)
将工具列表传给create_tool_calling_agent,再用AgentExecutor驱动执行。Mistral会自行判断用户问题是否需要调用天气工具,无需你写if-else逻辑。
注意:工具描述必须用英文撰写,中文描述会导致Mistral无法理解其用途,直接跳过调用。
部署为可交互的CLI终端
安装rich库提升终端输出体验:pip install rich。
编写主循环:用print()渲染用户输入,用chain.invoke()或agent_executor.invoke()获取响应,再用Console().print()高亮显示AI回复。
运行python cli.py,输入“查一下北京天气”,程序将自动调用weather工具并返回结果——整个过程无硬编码分支,完全由Mistral的推理能力驱动。











