AI Agent开发入门:基于Nanbeige 4.1-3B构建你的第一个智能体

发布时间:2026/5/21 11:32:38

AI Agent开发入门:基于Nanbeige 4.1-3B构建你的第一个智能体 AI Agent开发入门基于Nanbeige 4.1-3B构建你的第一个智能体你是不是也好奇那些能自己上网查资料、做计算、写总结的AI智能体是怎么做出来的感觉很高深离我们很远其实用现在开源的模型自己动手搭一个能跑起来的智能体并没有想象中那么难。今天我们就来一起动手用国产的Nanbeige 4.1-3B模型作为核心再给它配上“手”工具调用和“记事本”记忆模块打造一个能理解复杂指令、分步骤完成任务的小助手。最后我们还会用一个简单的网页界面把它展示出来让你能直接跟它对话。整个过程我会尽量用大白话讲清楚哪怕你之前没怎么接触过AI开发也能跟着一步步做出来。我们的目标是让你不仅能跑通代码更能理解一个AI智能体是怎么“思考”和“行动”的。1. 动手之前先搞懂智能体是什么在开始敲代码之前咱们先花几分钟把“智能体”这个概念掰扯清楚。这能帮你更好地理解后面每一步在做什么。你可以把AI智能体想象成一个有“大脑”、有“手”、还有“记事本”的虚拟小助手。大脑就是核心的大语言模型比如我们这次用的Nanbeige 4.1-3B。它负责理解你的话进行逻辑推理并决定下一步该做什么。手就是“工具调用”能力。光有大脑会想不行还得能干实事。比如当它需要最新天气信息时它能调用搜索工具去网上查当它需要计算时它能调用计算器。这些工具就是它的“手”。记事本就是“记忆”模块。你和它的对话历史、它自己思考的中间步骤都需要记下来。这样它才能进行多轮对话处理复杂的、需要多步骤的任务而不是每次都像失忆了一样从头开始。所以我们构建智能体的过程其实就是给一个聪明的大脑Nanbeige模型装上能干的手工具和可靠的记事本记忆并教它们如何协同工作。Nanbeige 4.1-3B这个模型是一个参数规模为30亿的中文大模型它在保持不错理解能力的同时对计算资源的要求相对友好非常适合我们用来学习和搭建原型。2. 搭建你的开发环境工欲善其事必先利其器。我们先来把开发环境准备好确保所有必要的“零件”都到位。2.1 基础环境配置首先你需要一个Python环境。我推荐使用Python 3.8到3.10的版本太新或太旧的版本可能会遇到一些库的兼容性问题。你可以使用conda或venv创建一个独立的虚拟环境避免污染系统环境。# 使用conda创建环境如果你安装了Anaconda或Miniconda conda create -n ai-agent python3.9 conda activate ai-agent # 或者使用venv创建环境 python -m venv ai-agent # 在Windows上激活 ai-agent\Scripts\activate # 在Mac/Linux上激活 source ai-agent/bin/activate2.2 安装核心依赖库环境激活后我们通过pip安装本次项目需要的所有库。你可以一次性复制下面的命令进行安装。pip install transformers torch streamlit langchain langchain-community我来简单解释一下这几个库是干什么的transformerstorch: 这是Hugging Face的模型加载和推理框架以及PyTorch深度学习库。我们靠它来加载和运行Nanbeige模型。streamlit: 一个超级好用的工具能让我们用很少的代码就把Python脚本变成交互式网页应用。我们的智能体演示界面就靠它了。langchainlangchain-community: LangChain是一个用于开发大模型应用的框架它把模型调用、记忆管理、工具链组装这些复杂的事情标准化、模块化了。我们用它能大大简化智能体的构建流程。langchain-community包含了很多社区贡献的工具和集成。安装过程可能需要几分钟取决于你的网络速度。3. 构建智能体的核心“大脑”环境好了我们首先来把智能体的“大脑”——Nanbeige模型给启动起来。3.1 加载Nanbeige 4.1-3B模型我们将使用Hugging Face的transformers库来加载模型。这里有一个小技巧对于Nanbeige这类模型我们可以直接从Hugging Face模型库Model Hub指定模型名称来加载。确保你的网络能够访问Hugging Face。我们创建一个Python脚本比如叫build_agent.py然后写入以下代码from transformers import AutoTokenizer, AutoModelForCausalLM import torch # 设置模型名称这里使用Nanbeige在Hugging Face上的官方标识 model_name Nanbeige/Nanbeige-4.1-3B print(f正在加载模型: {model_name}...) # 加载分词器负责把文字转换成模型能看懂的数字 tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) # 加载模型本身 model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.float16, # 使用半精度浮点数节省显存 device_mapauto, # 自动分配模型层到可用的GPU或CPU上 trust_remote_codeTrue ) print(模型加载完毕)第一次运行这段代码时它会从网上下载模型文件可能会需要一些时间和足够的磁盘空间约6-7GB。下载完成后再次运行就会快很多。trust_remote_codeTrue这个参数是因为一些模型包含了自定义的代码需要授权运行。3.2 让大脑学会调用工具光有大脑会思考还不够我们得教会它什么时候该用自己的“手”工具。在LangChain框架里这叫做“工具调用”Tool Calling。我们先定义两个最简单的工具一个计算器和一个模拟的网络搜索工具。from langchain.agents import Tool from langchain.tools import BaseTool import math # 1. 定义一个计算器工具 def calculator(query: str) - str: 用于执行数学计算。输入应该是一个数学表达式字符串。 try: # 安全地评估数学表达式注意实际生产环境应使用更安全的评估方法 # 这里为了演示使用eval但仅限于数学表达式 result eval(query, {__builtins__: None}, {math: math}) return f计算器结果: {result} except Exception as e: return f计算错误: {e} # 2. 定义一个模拟搜索工具真实项目可替换为SerpAPI等 def search_engine(query: str) - str: 用于搜索最新信息。输入是一个搜索查询词。 # 这里我们模拟返回一个固定结果真实情况下这里应该调用搜索引擎API simulated_results { 北京天气: 北京今天晴转多云气温15-25摄氏度南风2-3级。, AI最新进展: 近期多模态大模型在视频生成和理解方面取得显著突破。, Python编程: Python是一种广泛使用的高级编程语言以简洁易读著称。 } return simulated_results.get(query, f未找到关于 {query} 的模拟信息。) # 将函数包装成LangChain可识别的Tool对象 tools [ Tool( nameCalculator, funccalculator, description当你需要进行数学计算时使用此工具。输入应为一个数学表达式例如 3 5 * 2 或 math.sqrt(16)。 ), Tool( nameSearch, funcsearch_engine, description当你需要获取最新信息如天气、新闻、事实数据时使用此工具。输入应为一个搜索关键词。 ), ]这样我们就有了两个工具Calculator和Search。每个工具都有名字、功能函数和一段描述。这段描述非常重要因为大模型就是通过阅读这段描述来决定什么时候该调用哪个工具的。4. 组装完整的智能体现在我们把大脑模型、工具和记忆组装起来形成一个能自主工作的智能体。4.1 创建LangChain模型接口我们需要用LangChain提供的接口来封装刚才加载的Hugging Face模型让它能融入LangChain的智能体工作流。from langchain.llms import HuggingFacePipeline from transformers import pipeline # 创建一个文本生成的pipeline text_generation_pipeline pipeline( text-generation, modelmodel, tokenizertokenizer, max_new_tokens512, # 生成文本的最大长度 temperature0.7, # 控制创造性的参数越低越确定越高越随机 do_sampleTrue, ) # 将pipeline包装成LangChain的LLM对象 llm HuggingFacePipeline(pipelinetext_generation_pipeline)4.2 创建智能体执行器这是最核心的一步。我们使用LangChain的create_react_agent来创建一个智能体。ReAct是一个经典的智能体推理框架代表“推理Reasoning 行动Acting”智能体会先思考一步再决定是直接回答还是调用工具。from langchain.agents import create_react_agent, AgentExecutor from langchain.memory import ConversationBufferMemory from langchain import hub # 1. 给智能体一个“记事本”——记忆模块 memory ConversationBufferMemory(memory_keychat_history, return_messagesTrue) # 2. 从LangChain Hub拉取一个预设的ReAct提示词模板 # 这个模板会指导模型如何思考、如何选择工具 prompt hub.pull(hwchase17/react-chat) # 3. 创建智能体 agent create_react_agent(llm, tools, prompt) # 4. 创建智能体执行器它将负责运行整个循环思考-行动-观察-再思考... agent_executor AgentExecutor.from_agent_and_tools( agentagent, toolstools, memorymemory, verboseTrue, # 设置为True可以看到智能体详细的思考过程调试时非常有用 handle_parsing_errorsTrue # 处理解析错误让程序更健壮 )到这里一个具备记忆和工具调用能力的智能体就已经构建完成了agent_executor就是我们的智能体总管你向它提问它就会自动运转起来。5. 用网页界面与智能体对话代码写的智能体最好能有个直观的方式交互。我们用Streamlit快速搭建一个Web界面。创建一个新的文件命名为app.py写入以下代码import streamlit as st from build_agent import agent_executor # 导入我们刚才构建的智能体执行器 st.set_page_config(page_title我的第一个AI智能体, page_icon) st.title( 我的第一个AI智能体) st.caption(基于 Nanbeige 4.1-3B 工具调用 记忆模块构建) # 初始化会话状态用于存储聊天历史 if messages not in st.session_state: st.session_state.messages [] # 显示历史聊天记录 for message in st.session_state.messages: with st.chat_message(message[role]): st.markdown(message[content]) # 聊天输入框 if prompt : st.chat_input(请输入您的问题例如北京天气怎么样然后计算一下15度的华氏度是多少): # 显示用户消息 with st.chat_message(user): st.markdown(prompt) st.session_state.messages.append({role: user, content: prompt}) # 调用智能体获取回复 with st.chat_message(assistant): with st.spinner(智能体正在思考...): try: # 这里就是智能体核心的执行调用 response agent_executor.invoke({input: prompt, chat_history: st.session_state.messages}) answer response[output] except Exception as e: answer f抱歉处理您的请求时出现了错误: {e} st.markdown(answer) # 保存助手回复 st.session_state.messages.append({role: assistant, content: answer})这个界面非常简洁一个标题一个记录所有对话的聊天区域以及底部的一个输入框。当你输入问题并回车后它会调用我们之前写好的agent_executor并将智能体的回复展示出来。6. 运行与测试让我们看看成果吧首先确保你在终端中并且已经激活了之前创建的虚拟环境。在终端中运行Streamlit应用streamlit run app.py你的浏览器会自动打开一个本地网页通常是http://localhost:8501。现在你可以在输入框里尝试问一些需要多步骤推理或工具调用的问题了比如简单工具调用“北京天气怎么样”数学计算“计算一下 3 的 4 次方加上 10 等于多少”多步骤组合任务“先查一下AI最新进展然后用一句话总结。” 这会先调用搜索工具再让模型总结依赖上下文的对话先问“我叫小明”再问“我的名字是什么”。这能测试记忆模块是否工作。在终端里因为我们将verbose设置为了True你会看到智能体详细的思考过程类似下面这样 进入新的AgentExecutor链... 思考用户想知道北京的天气我需要使用搜索工具。 行动Search 行动输入北京天气 观察北京今天晴转多云气温15-25摄氏度南风2-3级。 思考我已经获得了北京天气的信息现在可以回答用户了。 最终答案北京今天晴转多云气温在15到25摄氏度之间南风2到3级。这个过程清晰地展示了ReAct框架的“推理-行动”循环非常有助于理解智能体是如何工作的。7. 总结与下一步跟着走完一遍你应该已经成功运行起了自己的第一个AI智能体。我们用它做了三件事加载了一个本地大模型作为大脑给它装备了搜索和计算两个工具作为双手并用一个记忆模块让它能记住对话最后用一个网页界面把它包装起来。整个过程最有趣的部分就是看到一段简单的文字指令如何被智能体拆解、思考、选择工具、执行并最终组合成一个完整答案。这背后就是LangChain这类框架在帮你管理复杂的流程。当然这只是一个起点。如果你想让它变得更强大可以从这几个方向试试换更强的大脑尝试其他更大的模型或者专为工具调用优化的模型如Qwen系列、DeepSeek系列等观察效果差异。增加更实用的手把模拟搜索换成真正的搜索引擎API如SerpAPI或者接入数据库查询、发送邮件、操作文件等真实工具。优化记忆管理当前的记忆是简单的对话缓存对于长对话可能会“遗忘”关键信息。可以尝试更高级的记忆方式如总结性记忆或向量数据库记忆。完善前端界面用Streamlit可以轻松添加更多控件比如工具开关、模型参数调整滑块、对话历史导出等。智能体开发就像搭积木核心就是模型、工具、记忆、流程这四个组件的选择和组合。希望这次动手实践能帮你卸下对AI Agent开发的神秘感亲手搭建的感觉比看十篇理论文章都要实在。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻