AI Agent开发入门基于Nanbeige 4.1-3B 构建自主任务执行智能体1. 引言当AI不只是聊天而是你的智能助手想象一下你只需要说一句“帮我调研一下最近比较火的AI绘画开源项目整理一份优缺点报告发给我。” 几分钟后一份结构清晰、信息详实的报告就出现在了你面前。这不再是科幻电影里的场景而是AI Agent智能体正在带来的现实。我们平时接触的很多大模型更像是一个知识渊博但“动手能力”有限的顾问。你问它答。但AI Agent不同它更像一个配备了“大脑”和“手脚”的智能助手。这个“大脑”负责理解你的意图、规划步骤而“手脚”则是一系列可以调用的工具比如上网搜索、计算、读写文件、调用其他API等。它不仅能理解“做什么”还能自主决定“怎么做”并最终完成一个复杂的任务。今天我们就来动手实践用国产优秀的轻量化大模型Nanbeige 4.1-3B作为核心“大脑”搭建一个属于你自己的AI Agent。我们将通过两个非常实用的例子来演示一是让它去调研一个开源项目并总结二是让它帮你整理待办事项并生成提醒。你会发现让AI从“聊天伙伴”升级为“执行伙伴”其实并没有那么复杂。2. 理解AI Agent从“思考”到“行动”的跨越在开始敲代码之前我们先花几分钟用人话把AI Agent的核心逻辑讲清楚。这能帮你更好地理解我们接下来要做的每一步。你可以把构建一个AI Agent想象成组建一个特种作战小队。Nanbeige 4.1-3B模型就是这个队伍的“指挥官”。它的核心能力是理解和规划。理解当你下达一个模糊的指令比如“调研项目X”指挥官需要准确理解你的深层需求你是想了解它的技术架构应用场景还是社区活跃度规划理解之后指挥官不能蛮干它需要制定一个行动计划。它会想“要完成这个任务我第一步需要调用‘搜索工具’去网上找资料第二步用‘文本分析工具’从海量信息里提取关键点第三步调用‘文档生成工具’把提取的信息整理成报告。”而“搜索工具”、“文本分析工具”、“文档生成工具”这些就是小队里的“特种兵”我们称之为工具Tools。指挥官自己不会搜索但它知道在什么时候、命令哪个特种兵去执行什么任务。所以一个AI Agent系统的基本工作流就是你给指挥官大模型下达一个复杂指令。指挥官理解指令并规划出需要调用哪些工具Tools、按什么顺序调用。指挥官调用第一个工具并等待工具返回结果比如搜索到的网页内容。指挥官根据第一个工具的结果决定下一步是继续调用其他工具还是已经收集到足够信息可以开始组织最终答案。循环步骤3和4直到任务完成指挥官将最终结果呈现给你。整个过程是自主的、连贯的。我们的工作就是把这个“指挥官”和“特种兵”们有效地组织起来并教会它们如何协作。Nanbeige 4.1-3B作为一个3B参数量的模型在轻量化和推理效率上表现不错非常适合作为这类自主任务“指挥官”的起点。3. 搭建环境准备好你的“作战指挥部”理论清楚了我们开始动手。首先需要搭建一个可以运行Nanbeige模型和工具调用的Python环境。这里我们会用到几个核心库。# 1. 安装深度学习框架和模型加载库 pip install torch transformers # 2. 安装用于加速推理的库可选但强烈推荐 pip install accelerate # 3. 安装我们用来定义和运行Agent的核心框架LangChain # LangChain提供了构建Agent所需的各种组件能让我们省去大量底层代码 pip install langchain langchain-community # 4. 安装一些可能用到的工具库例如用于网页内容提取的 pip install beautifulsoup4 requests安装完成后我们首先来测试一下Nanbeige 4.1-3B这个“指挥官”能否正常上岗。下面的代码演示如何加载模型并进行一次简单的对话。from transformers import AutoTokenizer, AutoModelForCausalLM import torch # 指定模型名称可以从ModelScope或Hugging Face获取 model_name Nanbeige/Nanbeige-4.1-3B # 加载分词器和模型 print(正在加载模型和分词器这可能需要几分钟...) 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(模型加载成功) # 准备一个测试问题 prompt 你好请介绍一下你自己。 inputs tokenizer(prompt, return_tensorspt).to(model.device) # 生成回复 with torch.no_grad(): outputs model.generate(**inputs, max_new_tokens200) response tokenizer.decode(outputs[0], skip_special_tokensTrue) print(模型回复, response)如果这段代码能成功运行并看到模型的自我介绍恭喜你你的“指挥官”已经就位了。接下来我们为它招募“特种兵”。4. 实战一构建能调研开源项目的智能体现在我们来实现第一个场景让Agent去自动调研一个开源项目。为了完成这个任务我们需要给它配备几个关键工具。4.1 装备核心工具搜索与总结一个调研任务至少需要两个工具网络搜索工具去获取最新的、真实的项目信息。文本总结工具将搜索到的冗长资料浓缩成精华。由于直接让大模型访问网络比较复杂我们这里用一个简化版的方法假设我们有一个能返回预设信息的“模拟搜索工具”。在实际项目中你可以接入真正的搜索引擎API如Serper API、Google Search API。from langchain.agents import Tool from langchain.utilities import WikipediaAPIWrapper from langchain.chains import LLMChain from langchain.prompts import PromptTemplate # 首先用LangChain包装一下我们的Nanbeige模型让它更容易被调用 from langchain.llms import HuggingFacePipeline from transformers import pipeline # 创建文本生成管道 text_generation_pipeline pipeline( text-generation, modelmodel, tokenizertokenizer, max_new_tokens500, temperature0.7, # 控制创造性调研任务可以调低一点 ) # 将管道包装成LangChain的LLM对象 nanbeige_llm HuggingFacePipeline(pipelinetext_generation_pipeline) # 工具1模拟网络搜索工具实际开发中替换为真实API def simulated_search(query: str) - str: 模拟搜索根据查询返回预设的项目信息。 project_info { stable diffusion: Stable Diffusion 是一个由Stability AI开源的文本到图像生成模型。 主要特点 1. 开源免费代码和模型权重公开催生了大量衍生应用。 2. 高质量图像能生成分辨率高、细节丰富的图片。 3. 本地部署可以在消费级GPU上运行保护隐私。 4. 活跃社区拥有庞大的用户和开发者社区插件和模型丰富。 常见用途艺术创作、设计辅助、游戏素材生成等。 , langchain: LangChain 是一个用于开发由大语言模型驱动的应用程序的框架。 核心价值 1. 组件化提供了模型I/O、记忆、检索、链、代理等标准化组件。 2. 代理Agent支持构建能自主调用工具的智能体这正是我们正在做的。 3. 生态丰富集成了大量工具、数据源和模型简化了开发流程。 它极大地降低了大模型应用开发的门槛。 } query_lower query.lower() for key in project_info: if key in query_lower: return f搜索到关于 {key} 的信息\n{project_info[key]} return f未找到关于 {query} 的详细预设信息。这里是一些通用建议查看项目的GitHub仓库、官方文档和技术博客。 # 工具2文本总结工具利用大模型自身能力 def summarize_text(text: str) - str: 调用大模型对长文本进行总结。 summary_prompt f请将以下文本的主要内容提炼成3-5个要点\n\n{text}\n\n要点 summary_result nanbeige_llm(summary_prompt) return summary_result # 将函数包装成LangChain可识别的Tool对象 tools [ Tool( nameWebSearch, funcsimulated_search, description当需要查找关于某个开源项目、技术概念或最新信息时使用此工具。输入应是一个明确的搜索查询词。 ), Tool( nameTextSummarizer, funcsummarize_text, description当有一段很长的文本需要提炼核心观点、总结要点时使用此工具。输入是需要总结的完整文本。 ) ]4.2 创建并运行你的第一个Agent工具准备好了现在用LangChain的Agent框架把它们和“指挥官”组装起来。from langchain.agents import initialize_agent, AgentType from langchain.memory import ConversationBufferMemory # 为Agent添加一点记忆让它能记住对话上下文 memory ConversationBufferMemory(memory_keychat_history, return_messagesTrue) # 初始化Agent。我们使用ZERO_SHOT_REACT_DESCRIPTION类型这是一个通用的、基于提示的Agent。 agent initialize_agent( tools, # 我们定义的工具列表 nanbeige_llm, # 我们的大模型“指挥官” agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, # Agent类型 verboseTrue, # 设置为True可以看到Agent的思考过程非常有助于调试和理解 memorymemory, handle_parsing_errorsTrue # 优雅地处理解析错误 ) # 现在让我们给Agent下达第一个任务 task 调研一下LangChain这个开源项目并总结它的核心特点和主要用途。 print(f任务指令: {task}\n) print(*50) result agent.run(task) print(*50) print(f\n最终报告:\n{result})当你运行这段代码并将verbose设置为True时你会在控制台看到Agent完整的思考链ReAct格式类似于Thought: 用户想了解LangChain。我需要先找到关于它的信息。 Action: WebSearch Action Input: LangChain open source project Observation: 搜索到关于 langchain 的信息...返回的预设信息 Thought: 我已经获得了关于LangChain的信息现在需要把这些信息总结成核心特点和用途。 Action: TextSummarizer Action Input: [上面搜索到的完整文本] Observation: 总结的要点是1. ... 2. ... 3. ... Thought: 我现在有了总结好的要点可以给用户一个清晰的回答了。 Final Answer: LangChain是一个...其主要特点包括...常用于...这个过程直观地展示了Agent如何自主规划Thought、选择工具Action、执行并观察结果Observation最终给出答案。这就是智能体的核心魅力。5. 实战二构建个人事务管理智能体第二个场景更贴近个人生活整理待办事项并生成提醒。这需要不同的工具组合。5.1 装备新工具文件读写与日历我们假设待办事项暂时存储在一个文本文件里并且能生成一个简单的日历提醒文件如.ics格式可导入到Google Calendar或Outlook。import json from datetime import datetime, timedelta # 工具3读取待办事项文件 def read_todo_file(filepath: str “my_todos.txt”) - str: 从指定文件读取待办事项列表。 try: with open(filepath, ‘r’, encoding‘utf-8’) as f: content f.read() if not content: return “待办事项文件是空的。” return f“从文件 {filepath} 中读取的待办事项\n{content}” except FileNotFoundError: return f“未找到文件{filepath}请先创建文件或添加待办事项。” # 工具4解析并整理待办事项由大模型完成结构化 def parse_and_organize_todos(todo_text: str) - str: 让大模型理解并分类待办事项。 parse_prompt f“” 你是一个智能助手。请分析以下混乱的待办事项文本将其整理成一个清晰的结构化列表。 请识别出每项任务的名称、可能的紧急程度高/中/低和大概的日期/时间信息如果有的话。 按【任务名称】- 【紧急程度】- 【时间信息】的格式列出。 原始文本 {todo_text} 整理后的列表 “” organized nanbeige_llm(parse_prompt) return organized # 工具5生成日历提醒文件简化版生成文本计划 def generate_calendar_reminder(task_list: str) - str: 根据结构化的任务列表生成一份简单的日历提醒计划。 plan_prompt f“” 你是一个日程规划助手。请根据以下结构化任务列表为我生成一份今日和明日的简单日程安排建议。 假设现在是周一上午9点。请为每个任务分配一个建议的处理时间段如‘今天下午2-3点’。 只需输出计划文本即可。 任务列表 {task_list} 日程安排建议 “” schedule nanbeige_llm(plan_prompt) # 在实际应用中这里可以调用API如Google Calendar API来创建真实日历事件。 # 此处我们只返回文本计划并模拟保存到一个文件。 reminder_content f“生成的日程提醒{datetime.now().strftime(‘%Y-%m-%d %H:%M’)}\n\n{schedule}” try: with open(“schedule_reminder.txt”, “w”, encoding“utf-8”) as f: f.write(reminder_content) return f“日程提醒已生成并保存到 ‘schedule_reminder.txt’ 文件中。\n内容预览\n{schedule}” except Exception as e: return f“生成文件时出错{e}” # 更新工具列表 management_tools [ Tool( name“ReadTodoFile”, funcread_todo_file, description“当需要获取当前的待办事项列表时使用。输入可以是文件路径默认为‘my_todos.txt’。” ), Tool( name“OrganizeTodos”, funcparse_and_organize_todos, description“当有一堆杂乱无章的待办事项文本需要整理、分类和结构化时使用。输入是原始的待办事项文本。” ), Tool( name“GenerateCalendarReminder”, funcgenerate_calendar_reminder, description“当需要根据整理好的任务列表生成一份日程安排或日历提醒时使用。输入是结构化的任务列表文本。” ) ]5.2 运行事务管理Agent现在创建一个新的Agent来专门处理事务管理任务。你需要先创建一个my_todos.txt文件里面随便写一些待办事项比如明天下午3点团队会议 尽快回复王经理的邮件高优先级 本周五前完成项目报告初稿 记得买咖啡豆 学习一下LangChain的Agent概念# 初始化事务管理Agent management_agent initialize_agent( management_tools, nanbeige_llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, verboseTrue, memoryConversationBufferMemory(memory_key“chat_history”, return_messagesTrue), handle_parsing_errorsTrue ) # 下达任务 management_task “请帮我整理一下本周的待办事项并生成一个简单的日历提醒安排。” print(f“任务指令: {management_task}\n”) print(““*50) management_result management_agent.run(management_task) print(““*50) print(f“\n事务处理结果:\n{management_result}”)运行后你会看到Agent自动执行了以下步骤读取文件、调用模型整理任务、然后生成日程建议并保存。最终你不仅得到了一份整理好的任务列表还会在本地看到一个schedule_reminder.txt文件。6. 总结与展望你的智能体之旅才刚刚开始通过上面两个实战例子我们已经成功地把Nanbeige 4.1-3B模型从一个单纯的对话模型升级成了一个具备初步规划和执行能力的AI Agent。整个过程的核心在于“工具调用”这个理念——让大模型学会在合适的时机使用合适的工具来扩展自己的能力边界。用下来感觉基于LangChain这样的框架来构建Agent大大降低了开发门槛。你不需要从头设计复杂的决策逻辑只需要定义好工具并选择一个合适的Agent类型框架就能帮你处理好大模型与工具之间的交互协议。Nanbeige 4.1-3B作为“大脑”在理解指令和规划简单步骤上已经能够胜任。当然这只是一个起点。要让这个智能体真正强大起来还有很长的路可以走。比如我们可以为它接入真实的网络搜索API、电子邮件客户端、项目管理软件如Jira、Trello的接口甚至是智能家居的控制能力。工具越丰富Agent能做的事情就越酷。此外还可以为它引入更复杂的记忆机制让它能记住更长的对话历史和用户偏好提供更个性化的服务。如果你对今天介绍的Nanbeige模型或者AI Agent开发感兴趣不妨就从这两个例子开始尝试替换成更真实的工具或者设计一个解决你实际工作痛点的任务。技术的乐趣就在于动手实践当你看到自己构建的智能体成功完成第一个复杂任务时那种成就感是非常独特的。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。