当前位置: 首页 > article >正文

文墨共鸣大模型智能体(Agent)开发入门:构建自动化任务执行系统

文墨共鸣大模型智能体Agent开发入门构建自动化任务执行系统你有没有想过让AI不仅能回答问题还能像人一样思考、规划并主动使用工具去完成任务比如你告诉它“帮我查一下北京的天气然后根据天气情况给我一个周末出行建议”它就能自己去搜索天气分析数据最后给你一份完整的出行方案。这听起来是不是很酷这就是智能体Agent的魅力。它让大模型从一个“聪明的回答者”变成了一个“能干的执行者”。今天我们就来聊聊如何利用文墨共鸣大模型作为核心大脑从零开始构建一个这样的自动化任务执行系统。整个过程并不复杂我会带你一步步走通让你也能亲手打造一个会思考、会行动的AI助手。1. 智能体是什么为什么需要它你可能已经习惯了直接向大模型提问比如“北京今天多少度”。它会根据训练数据中的知识给你一个答案。但这里有个问题如果问的是“北京今天下午三点会不会下雨”模型的知识可能不是最新的如果问的是“帮我计算一下房贷月供”它可能不擅长精确计算。这时候智能体的价值就体现出来了。你可以把它想象成一个配备了“大脑”和“工具箱”的机器人。文墨共鸣大模型就是这个“大脑”负责理解你的意图、制定计划、做出决策。而“工具箱”里则装着各种专用工具比如计算器、搜索引擎、文件读写接口等。当这个“大脑”接到一个复杂任务时它会先“思考”Reason拆解任务规划步骤。然后“行动”Act调用合适的工具去执行具体步骤。最后根据工具返回的结果再次“思考”决定下一步做什么直到任务完成。这个“思考-行动”的循环就是智能体领域经典的ReAct框架思想。所以智能体解决的核心问题是让大模型突破自身静态知识的限制通过使用外部工具动态地获取信息、执行操作从而完成更复杂、更实时的任务。2. 搭建你的第一个智能体从“思考-行动”循环开始理论说再多不如动手做一遍。我们从一个最简单的例子开始让智能体使用一个计算器工具完成数学运算。首先我们需要准备环境。这里我们使用Python并假设你已经安装了基本的开发环境。我们将使用openai风格的库来调用文墨共鸣大模型请根据你的实际API端点替换相关配置。# 示例基础环境设置 import os import json # 假设使用OpenAI兼容的API from openai import OpenAI # 初始化客户端请替换为你的实际API基址和密钥 client OpenAI( base_urlYOUR_API_BASE_URL, # 文墨共鸣API地址 api_keyYOUR_API_KEY, ) # 定义我们第一个简单的工具计算器 def calculator(expression: str) - str: 一个安全的简单计算器支持基础四则运算。 try: # 警告实际生产中应对表达式做严格安全检查这里仅为演示 # 使用eval仅用于演示在真实场景中请使用更安全的计算库如ast.literal_eval或自己解析 result eval(expression) return str(result) except Exception as e: return f计算错误: {e} # 定义工具列表供模型知晓 tools [ { type: function, function: { name: calculator, description: 执行数学表达式计算例如(12 5) * 3, parameters: { type: object, properties: { expression: { type: string, description: 需要计算的数学表达式如 3 5*2 } }, required: [expression] } } } ]环境搭好了工具也定义了一个。接下来就是最核心的部分如何让模型学会“思考”并决定何时调用工具我们通过构造特定的对话提示来实现。def run_agent_with_react(user_query: str, max_turns5): 运行一个简单的ReAct循环智能体。 messages [ {role: system, content: 你是一个智能助手可以调用工具来帮助用户。当你需要计算、搜索或执行其他操作时应该调用相应的工具。请逐步思考并只在需要时调用工具。}, {role: user, content: user_query} ] for turn in range(max_turns): # 1. 思考与规划模型决定是直接回答还是调用工具 response client.chat.completions.create( modelyour_model_name, # 替换为你的模型名称 messagesmessages, toolstools, tool_choiceauto, # 让模型自己决定是否调用工具 ) message response.choices[0].message messages.append(message) # 将模型的响应加入对话历史 # 2. 检查是否调用了工具 if message.tool_calls: print(f[回合 {turn1}] 模型决定调用工具...) for tool_call in message.tool_calls: function_name tool_call.function.name function_args json.loads(tool_call.function.arguments) # 3. 执行行动调用对应的工具函数 if function_name calculator: tool_result calculator(**function_args) else: tool_result f未知工具: {function_name} print(f 调用工具 {function_name}参数: {function_args}结果: {tool_result}) # 4. 将工具执行结果返回给模型供其下一步“思考” messages.append({ role: tool, tool_call_id: tool_call.id, name: function_name, content: tool_result, }) else: # 模型没有调用工具直接给出了最终答案 print(f[回合 {turn1}] 模型给出了最终回答。) final_answer message.content print(f最终答案: {final_answer}) return final_answer print(达到最大循环次数任务可能未完成。) return None # 让我们试一下 if __name__ __main__: query 请帮我计算一下如果一件商品原价是258元打8.5折后的价格是多少 result run_agent_with_react(query)运行这段代码你会看到类似下面的输出[回合 1] 模型决定调用工具... 调用工具 calculator参数: {expression: 258 * 0.85}结果: 219.3 [回合 2] 模型给出了最终回答。 最终答案: 商品打8.5折后的价格是219.3元。看智能体“活”了它没有直接猜测答案而是先“思考”到需要计算然后“行动”调用了计算器工具最后把结果组织成一句通顺的话回复给你。这就是ReAct循环的一个完整演示。3. 赋予智能体更多能力集成搜索与文件操作只会算数显然不够。一个有用的智能体应该能处理更多样化的任务。我们来给它增加两个更实用的工具一个模拟的搜索引擎和一个简单的文件读写工具。import datetime # 工具2模拟搜索引擎实际开发中可替换为真实API如Serper、Google Search等 def web_search(query: str) - str: 模拟网络搜索返回模拟结果。 print(f模拟搜索: {query}) # 这里模拟返回一些静态结果真实情况应调用搜索API mock_data { 北京天气: 北京2024年5月20日晴转多云气温18-28°C南风2-3级。, Python教程: Python是一种流行的编程语言以简洁易读著称。, 最新新闻: 模拟新闻AI技术大会将于下周举行。 } # 简单模拟根据关键词返回结果 for key in mock_data: if key in query: return mock_data[key] return f未找到关于 {query} 的精确信息。以下是模拟的通用结果相关主题 {query} 的信息正在更新中。 # 工具3简单的文件系统工具 class SimpleFileSystem: def __init__(self): self.files {} def read_file(self, filename: str) - str: 读取文件内容。 return self.files.get(filename, f错误文件 {filename} 不存在。) def write_file(self, filename: str, content: str) - str: 写入内容到文件。 self.files[filename] content return f成功写入文件 {filename}。 def list_files(self) - str: 列出所有文件。 if not self.files: return 当前没有文件。 return 现有文件: , .join(self.files.keys()) # 初始化文件系统 fs SimpleFileSystem() # 更新工具列表 tools [ { type: function, function: { name: calculator, description: 执行数学计算。, parameters: { type: object, properties: { expression: {type: string, description: 数学表达式如 (105)*2} }, required: [expression] } } }, { type: function, function: { name: web_search, description: 在互联网上搜索最新信息用于查询天气、新闻、事实等。, parameters: { type: object, properties: { query: {type: string, description: 搜索关键词} }, required: [query] } } }, { type: function, function: { name: read_file, description: 读取指定文件名的内容。, parameters: { type: object, properties: { filename: {type: string, description: 要读取的文件名} }, required: [filename] } } }, { type: function, function: { name: write_file, description: 创建或覆盖一个文件写入指定内容。, parameters: { type: object, properties: { filename: {type: string, description: 要写入的文件名}, content: {type: string, description: 要写入的文本内容} }, required: [filename, content] } } } ] # 更新智能体函数使其能处理新工具 def run_advanced_agent(user_query: str, max_turns6): messages [ {role: system, content: 你是一个强大的智能助手可以使用计算器、搜索网络、读写文件。请根据任务需要逐步调用工具。在给出最终答案前确保已通过工具获取了所有必要信息。}, {role: user, content: user_query} ] for turn in range(max_turns): response client.chat.completions.create( modelyour_model_name, messagesmessages, toolstools, tool_choiceauto, ) message response.choices[0].message messages.append(message) if message.tool_calls: print(f[回合 {turn1}] 模型正在协调多个工具...) for tool_call in message.tool_calls: func_name tool_call.function.name func_args json.loads(tool_call.function.arguments) if func_name calculator: tool_result calculator(**func_args) elif func_name web_search: tool_result web_search(**func_args) elif func_name read_file: tool_result fs.read_file(**func_args) elif func_name write_file: tool_result fs.write_file(**func_args) else: tool_result f工具调用错误: {func_name} print(f 调用 {func_name}: 参数{func_args}, 结果{tool_result[:50]}...) # 截断长结果 messages.append({ role: tool, tool_call_id: tool_call.id, name: func_name, content: tool_result, }) else: final_answer message.content print(f任务完成最终回答: {final_answer}) return final_answer print(任务可能未完全解决。) return None现在让我们挑战一个更复杂的任务看看智能体如何协调多个工具。# 场景查询天气并生成出行建议最后保存建议到文件 complex_task 请执行以下任务 1. 搜索一下北京今天的天气情况。 2. 根据天气为我规划一个简单的周末户外活动建议例如如果天气好建议去公园如果下雨建议室内活动。 3. 将这个出行建议保存到一个名为‘weekend_plan.txt’的文件中。 4. 最后告诉我文件保存成功并简要复述建议。 print(开始执行复杂任务...) print(用户请求:, complex_task) run_advanced_agent(complex_task)这个任务涉及多个步骤搜索信息、基于信息推理生成文本、操作文件系统。一个训练良好的智能体会大致按以下流程执行调用web_search工具查询“北京今天天气”。收到天气结果模拟数据为“晴转多云18-28°C”后模型内部推理出这是一个好天气。生成一段户外活动建议如“建议去颐和园或奥林匹克森林公园散步”。调用write_file工具将建议写入文件。最后调用read_file工具确认内容或直接生成最终确认信息回复用户。通过这个例子你能清晰地看到智能体如何像项目经理一样将一个模糊的指令分解成具体的、可执行的动作序列并指挥不同的“工具人”工具去完成。4. 让智能体更可靠实战中的技巧与挑战自己动手搭建后你可能会发现一些情况有时候模型不该调用工具时却调用了或者调用工具的参数不对。这很正常让智能体稳定可靠是开发中的核心挑战。这里分享几个实用的技巧第一写好工具描述。这是最重要的部分。模型的“思考”很大程度上依赖于你对每个工具功能的文字描述。描述要清晰、具体说明工具的用途、输入参数的格式和含义。好的描述能极大减少模型误用工具的情况。第二设计好的系统提示词。系统提示词是模型的“工作手册”。你需要明确告诉它“你是一个可以调用工具的智能体。在回答前请先思考是否需要使用工具来获取信息或执行操作。如果需要请调用合适的工具。” 你还可以在提示词中规定它的思考格式比如要求它先输出“思考...”再输出“行动...”这有助于调试。第三处理错误和意外。工具调用可能会失败比如网络超时、文件不存在。在智能体的循环中需要能捕获这些错误并将错误信息以一种模型能理解的方式返回给它让它有机会尝试其他方案或向用户求助。第四控制循环与超时。就像上面的代码里的max_turns必须设置一个最大循环次数防止模型陷入“思考-调用-再思考”的死循环。对于复杂任务5-10个循环通常足够。第五从简单场景开始验证。不要一开始就设计一个需要调用五六个工具的超复杂任务。先从“计算器”这种确定性高、结果简单的工具开始确保基础链路跑通。然后逐步增加搜索、API调用等不确定性较高的工具并观察模型的规划能力。5. 下一步你的智能体能做什么走完这个入门教程你已经掌握了智能体开发的核心骨架ReAct循环、工具定义与调用、多步骤任务规划。基于这个骨架你可以为自己的智能体注入无穷的“超能力”。想想看你可以集成哪些工具信息获取接入真实的天气API、股票数据API、航班查询API。内容创作接入文生图模型让智能体根据你的描述直接生成配图接入文本摘要工具让它帮你处理长文档。自动化操作接入邮件发送库、日历管理API让它帮你安排会议、发送提醒。专业领域接入代码解释器让它分析数据、生成图表接入法律数据库提供初步的合同审查建议。智能体就像一个乐高底座而各种工具就是乐高积木。你的想象力决定了最终能搭建出什么。你可以构建一个个人效率助手一个智能客服原型甚至是一个能够自主进行简单科研调研的AI研究员。开发过程中你可能会对文墨共鸣大模型在规划与推理方面的能力有更深的感受。不同的模型在工具调用的准确性和逻辑规划能力上会有差异多尝试、多调整提示词是提升智能体表现的关键。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

文墨共鸣大模型智能体(Agent)开发入门:构建自动化任务执行系统

文墨共鸣大模型智能体(Agent)开发入门:构建自动化任务执行系统 你有没有想过,让AI不仅能回答问题,还能像人一样思考、规划,并主动使用工具去完成任务?比如,你告诉它“帮我查一下北京…...

从‘两遍法’到‘并查集’:图像连通域算法演进与性能避坑指南

从‘两遍法’到‘并查集’:图像连通域算法演进与性能避坑指南 在工业质检、自动驾驶或医学影像分析中,处理一张2000万像素的图像时,传统连通域算法可能让系统卡顿数秒——这恰恰是算法选型失误的典型代价。本文将带您穿透三种主流算法的技术…...

利用UptimeFlare与Cloudflare Workers自动化保活Huggingface Space

1. 为什么需要保活Huggingface Space Huggingface Space是个好东西,能让我们免费部署各种AI应用。但有个头疼的问题:如果48小时内没人访问,Space就会自动休眠。下次有人访问时,又要重新启动,等得花儿都谢了。我自己做…...

Win11系统下MongoDB的安装与配置全攻略

1. MongoDB简介与环境准备 MongoDB作为当前最流行的NoSQL数据库之一,以其灵活的文档存储结构和出色的扩展性深受开发者喜爱。在Win11系统上部署MongoDB,可以轻松搭建本地开发环境或小型生产环境。我最近在帮团队搭建测试环境时,发现很多新手…...

新手必看:用Proteus仿真51单片机数字电压表,附完整代码和电路图

从零开始构建51单片机数字电压表:Proteus仿真全流程指南 引言:为什么选择仿真学习51单片机? 对于刚接触嵌入式开发的初学者来说,直接购买硬件设备可能存在成本高、调试困难等问题。Proteus仿真软件为我们提供了完美的解决方案——…...

魔百和CM211-1机顶盒s905l3b芯片刷机实战:从安卓到Armbian全流程解析

1. 魔百和CM211-1机顶盒硬件拆解 先来看看这台设备的硬件底子。拆开CM211-1的黑色外壳,最显眼的就是那块s905l3b芯片——这是整个刷机过程的灵魂所在。这个四核Cortex-A53架构的处理器,主频能跑到1.8GHz,配上Mali-G31 MP2 GPU,性能…...

第20篇:扩展卡尔曼滤波器实战精讲

本篇前置知识:掌握基础线性代数、了解状态空间方程、会基础Python编程、熟悉标准卡尔曼滤波原理、接触过工控闭环数据采集。 零基础小白也能跟着吃透,全程避开晦涩纯数学推导,所有知识点绑定机器人、自动驾驶、工控实测场景,代码直…...

如何一键备份你的QQ空间历史说说:GetQzonehistory完整指南

如何一键备份你的QQ空间历史说说:GetQzonehistory完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里的珍贵回忆会随着时间消失?那些承…...

HY-Motion 1.0从安装到出片:3步完成3D动画生成,小白友好教程

HY-Motion 1.0从安装到出片:3步完成3D动画生成,小白友好教程 想不想用几句话就让3D角色动起来?现在通过HY-Motion 1.0,你只需要输入文字描述,就能自动生成专业的3D骨骼动画。这篇文章将带你从零开始,用最简…...

手把手教你用Docker快速搭建CVE-2025-55182漏洞复现环境(附POC验证)

基于Docker的CVE-2025-55182漏洞靶场构建与安全研究实践 在当今快速迭代的前端技术生态中,React Server Components(RSC)作为Next.js框架的核心特性,正在重塑服务端渲染的实现方式。然而,2025年曝光的CVE-2025-55182漏…...

5分钟精通网页内容转化:AnythingLLM浏览器扩展全攻略

5分钟精通网页内容转化:AnythingLLM浏览器扩展全攻略 【免费下载链接】anything-llm 这是一个全栈应用程序,可以将任何文档、资源(如网址链接、音频、视频)或内容片段转换为上下文,以便任何大语言模型(LLM&…...

OpenPose vs MediaPipe:人体姿态估计工具选型指南

OpenPose与MediaPipe:人体姿态估计技术选型实战指南 1. 技术选型的核心考量维度 在计算机视觉领域,人体姿态估计技术已经发展出多种解决方案,其中OpenPose和MediaPipe作为两大主流框架,各有其技术特点和适用场景。对于技术决策者…...

Jetson AGX Orin避坑指南:从换源到编译Torchvision,我踩过的那些ARM架构的‘坑’

Jetson AGX Orin避坑实战:ARM架构下的深度学习环境搭建血泪史 第一次把Jetson AGX Orin拿到手时,我天真地以为这不过是一台"加强版树莓派"。直到连续三天被各种404 Not Found、Illegal instruction (core dumped)和No matching distribution f…...

从视频处理到医疗影像:Conv3D输出形状计算中的那些‘坑’与高效设计指南

从视频处理到医疗影像:Conv3D输出形状计算中的那些‘坑’与高效设计指南 当你在深夜调试一个3D卷积神经网络时,突然发现输出的特征图尺寸比预期小了整整一半——这种场景对于处理视频分类或医疗影像的工程师来说再熟悉不过了。Conv3D层看似简单的参数设…...

DNS区域传送漏洞详解:从原理到防御(以Bind9为例)

DNS区域传送漏洞深度解析与BIND9安全加固实战指南 当你在浏览器输入一个网址时,背后发生的DNS查询过程就像一场精密的交响乐演出。而区域传送(Zone Transfer)作为DNS系统中的关键机制,本应是乐谱中协调各声部的指挥棒&#xff0c…...

开发者专属:OpenClaw调试Qwen3-32B镜像的3个高级技巧

开发者专属:OpenClaw调试Qwen3-32B镜像的3个高级技巧 1. 为什么需要调试OpenClaw与Qwen3-32B的交互 当我第一次在本地RTX 4090D上部署Qwen3-32B镜像并接入OpenClaw时,本以为开箱即用的组合会一帆风顺。但实际运行自动化任务时,发现三个典型…...

Z-Image-Turbo-辉夜巫女材质与光影专题:金属、玻璃、织物等不同质感的极致渲染

Z-Image-Turbo-辉夜巫女材质与光影专题:金属、玻璃、织物等不同质感的极致渲染 你有没有想过,为什么有些AI生成的图片看起来“假假的”,一眼就能认出来?很多时候,问题就出在“质感”上。金属不像金属,玻璃…...

OptiScaler终极指南:一键解锁三大显卡厂商的免费超采样神器

OptiScaler终极指南:一键解锁三大显卡厂商的免费超采样神器 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 还在为游戏…...

构建高性能本地服务穿透通道:Rust异步网络隧道实践

构建高性能本地服务穿透通道:Rust异步网络隧道实践 【免费下载链接】tunnelto Expose your local web server to the internet with a public URL. 项目地址: https://gitcode.com/GitHub_Trending/tu/tunnelto 在分布式开发和远程协作日益普及的今天&#x…...

3个关键步骤让老款Mac重获新生:OpenCore Legacy Patcher终极指南

3个关键步骤让老款Mac重获新生:OpenCore Legacy Patcher终极指南 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当苹果宣布你的Mac不再支持最新的macOS系统时…...

5个核心技巧:开源上采样工具OptiScaler的游戏优化实战指南

5个核心技巧:开源上采样工具OptiScaler的游戏优化实战指南 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler OptiScaler作…...

Qt 5.9.4 + NDK r10e + JDK 1.8:一个老项目Android移植的稳定环境搭建实录

Qt 5.9.4 NDK r10e JDK 1.8:构建Android移植的黄金环境组合 在移动开发领域,技术迭代速度令人眼花缭乱,但对于那些需要维护历史Qt项目的开发者来说,稳定往往比新潮更重要。我曾接手过一个2017年开发的工业控制软件项目&#xff…...

Meixiong Niannian画图引擎Typora集成:Markdown文档图像生成

Meixiong Niannian画图引擎Typora集成:Markdown文档图像生成 1. 为什么文档作者需要在Typora里直接画图? 你有没有过这样的经历:写技术文档时,突然需要一张示意图来说明某个流程;写产品需求时,想快速画个…...

AudioLDM-S实战教程:为有声书项目批量生成章节过渡音效(含脚本)

AudioLDM-S实战教程:为有声书项目批量生成章节过渡音效(含脚本) 1. 项目简介 AudioLDM-S是一个专门生成现实环境音效的AI工具,基于audioldm-s-full-v2模型的轻量级Gradio实现。无论你需要电影配音、游戏音效还是助眠白噪音&…...

VibeVoice语音合成效果展示:印度英语in-Samuel_man技术讲座样例

VibeVoice语音合成效果展示:印度英语in-Samuel_man技术讲座样例 1. 真实语音合成效果体验 今天我要带大家体验一个让人惊艳的语音合成技术——VibeVoice实时语音合成系统。这不是普通的文字转语音工具,而是一个能够生成极其自然、富有表现力的人工智能…...

Z-Image-Turbo_Sugar脸部Lora应用探索:游戏NPC角色脸谱AI生成工作流

Z-Image-Turbo_Sugar脸部Lora应用探索:游戏NPC角色脸谱AI生成工作流 1. 什么是Z-Image-Turbo_Sugar脸部Lora Z-Image-Turbo_Sugar脸部Lora是一个专门用于生成特定风格脸部图像的AI模型。它基于Z-Image-Turbo模型,通过Lora技术进行了精细调优&#xff0…...

OpenClaw安全实践:nanobot权限管理指南

OpenClaw安全实践:nanobot权限管理指南 1. 为什么需要关注OpenClaw的安全配置 去年夏天,我在调试一个自动整理照片的OpenClaw任务时,不小心让AI助手误删了整整一个月的旅行照片。这次惨痛教训让我深刻意识到:给AI开放系统操作权…...

如何高效完成SVN到Git的无缝迁移:svn2git终极实战指南

如何高效完成SVN到Git的无缝迁移:svn2git终极实战指南 【免费下载链接】svn2git 项目地址: https://gitcode.com/gh_mirrors/sv/svn2git 如果你正在考虑将版本控制系统从SVN迁移到Git,那么svn2git工具将是你的最佳选择。这款专业的Ruby工具能够智…...

小米平板5 Windows驱动包:让Windows在平板上流畅运行的终极指南

小米平板5 Windows驱动包:让Windows在平板上流畅运行的终极指南 【免费下载链接】MiPad5-Drivers Based on Surface Duo Drivers. 项目地址: https://gitcode.com/gh_mirrors/mi/MiPad5-Drivers 想要在小米平板5上完美运行Windows系统吗?MiPad5-D…...

告别海量标注!用Wav2Vec 2.0在10分钟语音数据上跑出可用ASR模型

极低资源语音识别实战:用Wav2Vec 2.0在10分钟数据上构建可用模型 当创业团队面临语音交互产品的原型开发时,最头疼的往往不是算法选择,而是标注数据匮乏的现实。传统语音识别方案需要数百小时的标注语音才能达到基本可用水平,而Wa…...