掘金 人工智能 前天 10:22
AI大模型应用开发入门(二)LangChain开发Agent
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文分享了如何使用LangChain框架和GPT-4o-mini模型构建一个智能代理系统。该系统具备记忆、搜索和函数执行能力,通过集成工具和消息修剪策略,实现了高效的对话管理和外部知识获取。文章详细介绍了环境准备、模型初始化、工具集成、PostgreSQL持久化配置、消息修剪策略以及智能体执行器的构建过程。通过实际的交互示例,展示了该智能体系统的功能和应用,为开发者提供了构建智能代理的实践经验。

🤖️ **环境准备与模型初始化**:文章首先介绍了使用LangChain框架初始化GPT-4o-mini语言模型的过程,并将其封装在llm_env.py文件中,为后续程序提供支持。

🛠️ **工具集成与搜索工具接入**:文章定义了一个简单的数学函数add,并接入了TavilySearchResults搜索工具,增强了智能体获取外部知识的能力。

💾 **LangGraph持久化存储**:文章使用PostgresSaver来记录智能体的状态与历史会话,以便支持多轮对话记忆。用户输入thread_id,程序组合当天日期生成唯一标识符,确保每个会话线程独立可追溯。

✂️ **消息修剪策略设计**:为了控制模型输入token上限,文章引入trim_messages方法,在每轮对话前进行修剪,仅保留最近的用户消息,避免长对话历史超出token限制,影响模型响应。

🧑‍💻 **构建智能体执行器与交互**:文章借助create_react_agent方法创建智能体,传入模型、工具、hook与checkpoint,并进入循环模式,接收用户输入,执行智能体推理,并输出响应内容及工具调用情况。

基于 LangChain 和 GPT-4o-mini 的大模型智能体开发实战

近年来,大模型能力的持续突破,使得构建智能代理(Agent)系统成为开发者追逐的热点。

本文将以 LangChain 框架为核心,结合 GPT-4o-mini 模型,通过接入工具与消息修剪策略,实现一个具备记忆、调用搜索、执行函数能力的智能体。

环境准备与模型初始化

使用 LangChain 需要首先初始化语言模型,这里使用的是 GPT-4o-mini,由 OpenAI 提供。

# llm_env.pyfrom langchain.chat_models import init_chat_modelllm = init_chat_model("gpt-4o-mini", model_provider="openai")

我们将其封装在 llm_env.py 中供主程序导入。

主程序结构解析

主逻辑文件为 main_agent_trim.py,功能包括:

工具函数与搜索工具接入

我们首先定义了一个简单的数学函数 add,以及接入了 TavilySearchResults 搜索工具,用于增强智能体外部知识获取能力。

def add(a: int, b: int) -> int:    return a + bsearch = TavilySearchResults(max_results=5)tools = [add, search]

配置 LangGraph 持久化存储

我们使用 PostgresSaver 来记录 agent 的状态与历史会话,以支持多轮对话记忆。

DB_URI = "postgresql://postgres:123456@localhost:5432/langchaindemo?sslmode=disable"with PostgresSaver.from_conn_string(DB_URI) as checkpointer:    checkpointer.setup()

用户输入 thread_id,我们组合当天日期生成唯一标识符,确保每个会话线程独立可追溯。

消息修剪策略设计

为了控制模型输入 token 上限,我们引入 trim_messages 方法,在每轮对话前进行修剪:

def pre_model_hook(state):    trimmer = trim_messages(        max_tokens=65,        strategy="last",        token_counter=llm_env.llm,        include_system=True,        allow_partial=False,        start_on="human",    )    trimmed_messages = trimmer.invoke(state["messages"])    return {"llm_input_messages": trimmed_messages}

该策略仅保留最近的用户消息,避免长对话历史超出 token 限制,影响模型响应。

构建智能体执行器

借助 create_react_agent 方法创建智能体,传入模型、工具、hook 与 checkpoint。

agent_excuter = create_react_agent(    llm_env.llm,    tools,    pre_model_hook=pre_model_hook,    checkpointer=checkpointer,)

与智能体交互

程序进入循环模式,接收用户输入,执行智能体推理,并输出响应内容及工具调用情况。

while True:    query = input("你: ")    if query.strip().lower() == "exit":        break    input_messages = [HumanMessage(query)]    response = agent_excuter.invoke({"messages": input_messages}, config=config)    for message in response["messages"]:        if hasattr(message, "content") and message.content:            print(f"{message.type}:{message.content}")        if hasattr(message, "tool_calls") and message.tool_calls:            print(f"{message.type}:{message.tool_calls}")

示例

总结

本文将展示如何利用 LangChain 框架,构建一个功能丰富的智能体系统,它不仅能搜索信息、执行函数,还能自动修剪消息并持久化状态。通过巧妙设计钩子(hook)和工具链,我们可以不断扩展这个系统的能力边界。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangChain GPT-4o-mini 智能体 AI Agent 大模型
相关文章