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

【Azure 架构师学习笔记 】- Azure AI(18)-搭建基于Azure的入门级Agent

本文属于【Azure 架构师学习笔记】系列。
本文属于【Azure AI】系列。
接上文 【Azure 架构师学习笔记 】- Azure AI(17)-入门铺垫—基于Azure的Agent核心认知与环境准备

前言

上一篇我们完成了Azure国际版环境准备和Agent核心认知,明确了Agent的四大模块、三层生态,以及Azure国际版对Agent的核心支撑,同时确认了已有的GPT-4模型可作为Agent的核心决策驱动。
这一篇将进入实操核心:搭建第一个可运行的极简Agent。作为入门,我们不追求复杂功能,先实现“指令解析→任务执行→结果反馈”的闭环,核心依托Azure OpenAI的GPT-4模型实现任务规划,复用你之前掌握的Python代码和Azure配置逻辑,降低学习成本。

二、极简Agent的核心模块拆解

我们将搭建的第一个极简Agent,核心包含3个模块(对应代码的3个核心函数),这也是所有Agent的基础框架:

  1. 配置模块:加载Azure OpenAI的配置(Endpoint、API Key 、Deployment Name),确保能正常调用GPT-4模型,复用上一篇的配置逻辑,无需重复编写;

  2. 指令解析与任务规划模块:接收用户指令(如“总结一段文本”),通过Azure GPT-4模型解析指令、规划执行步骤(版暂不拆解复杂步骤,重点实现“指令→执行”的直接映射);

  3. 工具执行模块:根据规划的步骤,调用对应的工具(本篇先实现“文本总结”工具,后续逐步扩展文件处理、导出等工具),工具的核心逻辑复用Azure OpenAI的调用能力。

补充说明:此版Agent暂不加入复杂的多轮记忆和批量处理,重点验证“Azure GPT-4模型调用→任务执行”的流程,确保核心功能可运行,后续逐步迭代完善。

三、实操:编写极简Agent完整代码

建议保存为agent_basic.py

fromopenaiimportAzureOpenAIimportjsonimportos# ===================== 1. Azure OpenAI配置模块(复用+适配Agent) =====================# 配置文件路径(和上一篇一致,保存Azure信息,避免每次输入)CONFIG_FILE="azure_config.json"defload_azure_config():"""加载Azure OpenAI配置,新增配置校验"""ifos.path.exists(CONFIG_FILE):withopen(CONFIG_FILE,"r",encoding="utf-8")asf:config=json.load(f)# 验证配置是否完整(Azure必备3个参数,适配GPT-4调用)required_keys=["azure_endpoint","api_key","deployment_name"]ifall(keyinconfigforkeyinrequired_keys):returnconfigelse:raiseValueError("Azure配置不完整,需包含azure_endpoint、api_key、deployment_name")else:# 若没有配置文件,引导用户填写(首次运行,和上一篇操作一致)config={"azure_endpoint":input("请输入AzureEndpoint:"),"api_key":input("请输入Azure OpenAI API Key:"),"deployment_name":input("请输入Azure OpenAI部署名称(需为GPT-4):")}withopen(CONFIG_FILE,"w",encoding="utf-8")asf:json.dump(config,f,ensure_ascii=False,indent=4)returnconfig# 初始化Azure OpenAI客户端(指定稳定API版本)config=load_azure_config()client=AzureOpenAI(azure_endpoint=config["azure_endpoint"],api_key=config["api_key"],api_version="2025-01-01-preview"#)# ===================== 2. 工具模块(极简版:文本总结工具,GPT-4驱动) =====================deftext_summary_tool(text:str)->str:"""文本总结工具(Agent可调用的第一个工具),复用Azure OpenAI调用逻辑,适配GPT-4"""try:response=client.chat.completions.create(model=config["deployment_name"],# 关联你部署的GPT-4模型messages=[{"role":"system","content":"你是专业的文本总结助手,总结需简洁、准确,控制在100字内,无冗余内容,贴合职场场景。"},{"role":"user","content":f"请总结以下文本:\n{text}"}],temperature=0.2# 降低随机性,确保总结结果稳定)returnresponse.choices[0].message.content.strip()exceptExceptionase:returnf"文本总结失败(GPT-4调用异常):{str(e)}"# ===================== 3. Agent核心模块(指令解析+任务规划+工具调用) =====================classSimpleAzureAgent:def__init__(self):# 初始化Agent,加载工具(后续可添加更多工具,如文件处理)self.tools={"文本总结":text_summary_tool# 工具名称→工具函数的映射,方便Agent快速调用}defparse_instruction(self,instruction:str)->dict:"""解析用户指令,判断需要调用的工具(极简版:直接匹配工具名称,降低复杂度)"""# 这里用简单的关键词匹配,后续将升级为GPT-4智能解析,适配复杂指令fortool_nameinself.tools.keys():iftool_nameininstruction:return{"tool_name":tool_name,"content":instruction.replace(tool_name,"").strip(),# 提取需要处理的文本内容"status":"success"}# 若未匹配到工具,返回明确提示,引导用户输入正确指令return{"status":"fail","message":"未识别到可处理的任务,请输入包含「文本总结」的指令(如:文本总结 今天的会议内容是...)"}defrun(self,instruction:str)->str:"""Agent运行入口:串联「解析指令→调用工具→返回结果」全流程"""print(f"Agent接收指令:{instruction}")# 1. 解析用户指令,判断需要调用的工具parse_result=self.parse_instruction(instruction)ifparse_result["status"]=="fail":returnparse_result["message"]# 2. 调用对应的工具,执行具体任务tool_name=parse_result["tool_name"]content=parse_result["content"]ifnotcontent:returnf"请输入需要{tool_name}的内容(如:{tool_name}具体文本)"tool_func=self.tools[tool_name]result=tool_func(content)# 3. 返回处理结果,格式清晰,方便用户查看returnf"Agent处理结果({tool_name}):\n{result}"# ===================== 4. 测试Agent(直接运行,验证功能) =====================if__name__=="__main__":# 初始化Agent,加载GPT-4模型和工具agent=SimpleAzureAgent()print("✅ Azure极简Agent已启动(基于GPT-4驱动)")print("示例指令:文本总结 今天召开了项目会议,讨论了下一版本的功能迭代计划,确定了需求优先级,预计下周三完成开发任务。")print("输入「退出」即可结束运行")# 交互测试,模拟用户使用场景whileTrue:user_input=input("\n请输入指令:")ifuser_input=="退出":print("❌ Agent已停止运行")break# 运行Agent并输出结果,验证GPT-4调用和工具执行result=agent.run(user_input)print(result)

四、代码运行与测试

代码运行步骤简单,附测试成功示意图,方便你对照验证:

  1. 保存代码:将上述代码保存为agent_basic.py,放在本地文件夹(建议和上一篇的azure_config.json文件放在同一目录,避免配置读取失败);

  2. 运行代码:打开CMD,进入代码所在目录,执行命令 python agent_basic.py;

  3. 首次运行验证:若没有azure_config.json文件,会提示输入Azure的Endpoint、API Key、Deployment Name(可从Azure门户复制,和上一篇准备的一致,确保Deployment Name是GPT-4的部署名称);

  4. 功能测试(输入以下指令,验证Agent是否正常运行,对照示意图查看结果):

  5. 测试指令1(基础功能):文本总结 今天召开了项目会议,参会人员有产品、开发、测试,会议核心讨论了下一版本的功能迭代计划,确定了需求优先级,预计下周三完成开发任务。

  6. 预期结果:Agent调用文本总结工具(GPT-4驱动),返回简洁的总结(100字内),无冗余内容;

  1. 测试指令2(异常验证):输入“整理文件”(未包含“文本总结”关键词),Agent会提示“未识别到可处理的任务”,验证指令解析功能;

  1. 测试指令3(空内容验证):输入“文本总结”(未输入具体文本),Agent会提示“请输入需要总结的内容”,验证参数校验功能。

五、核心知识点讲解

  1. Agent核心逻辑讲解(理解底层原理)

Agent的运行流程:用户输入指令 → Agent解析指令(匹配工具) → 调用对应工具(文本总结,GPT-4驱动) → 返回结果,其中3个核心关键点需重点掌握:

  • tools字典:实现“工具名称→工具函数”的映射,后续添加新工具(如文件处理),只需在字典中添加对应映射即可,扩展性强;

  • parse_instruction函数:极简版用关键词匹配,降低理解和开发难度,后续将升级为“通过Azure GPT-4模型解析指令”,实现更智能的任务识别(如识别复杂指令);

  • run函数:Agent的入口,串联“解析→调用→返回”的全流程,是Agent的核心控制逻辑,后续所有功能升级(如多轮记忆、批量处理),都会围绕这个入口扩展。

  1. 常见问题排查

运行代码时,若出现报错,可对照以下常见问题排查:

  • 报错“配置不完整”:检查azure_config.json文件,确保3个核心参数都填写正确,无拼写错误;如果还有错误,可以删除这个json文件重新运行。

  • 报错“模型调用失败”:检查Deployment Name是否为GPT-4的部署名称,同时确认Azure订阅处于活跃状态,API Key未过期;

  • 代码运行无响应:检查网络是否能正常访问Azure国际版,若网络异常,需确保Azure国际版的访问权限正常。


六、本篇总结与下一篇预告

本篇我们成功搭建了第一个基于Azure的入门级Agent,依托GPT-4模型实现了“文本总结”功能,掌握了Agent的核心框架(配置→解析→工具调用),同时验证了Azure模型调用的稳定性,也解决了新手常见的调用和运行问题。

下一篇,我们将升级Agent:添加多轮记忆功能(让Agent记住上下文,比如追问上一次的总结内容)、扩展文件处理工具(复用你之前的多格式文件处理代码),让Agent能处理“总结Word文档”“提取Excel内容”等更贴近职场的任务,逐步向实用型Agent升级,同时继续补充对应的示意图,方便解升级逻辑。

http://www.cnnetsun.cn/news/1337221.html

相关文章:

  • k8s工作负载-Job和CronJob
  • 苍穹外卖WebSocket连接问题
  • 游戏原画师福音:Kook Zimage真实幻想Turbo保姆级入门教程
  • 密码学数学基础 - 整数关系
  • 虚幻4网络通信必备:手把手教你用Va Rest插件对接SpringBoot后端
  • 金融问答合规最后窗口期:Dify 0.12+版本强制启用的3项新审计日志字段,错过将无法通过Q3银保监现场检查
  • WSL2后悔药教程:用export命令实现系统时光机(Ubuntu版)
  • 详解单链表(含链表的实现过程)
  • YOLO系列算法改进 | 主干改进篇 | 替换MobileViGv2可缩放图卷积网络 | 助力模型复杂场景下精细区分目标和理解空间关系 | CVPR 2024
  • 让照片活起来:Image-to-Video图像转视频生成器实战体验
  • Cosmos-Reason1-7B实战案例:教育AI助手解析物理实验视频并生成考题
  • Phi-3-vision-128k-instruct镜像免配置:Docker一键拉起+Chainlit前端自动对接
  • 2026企业级攻防实战全解析:从攻击链路到防御体系(附应急响应指南)
  • 基于STM32的NES游戏硬件扩展板设计
  • 电容感应式烙铁自动清洁器设计与实现
  • STM32F103C8循迹小车实战:IO口模式选择与PWM调参避坑指南
  • 【ROS2】从零开始构建你的第一个ROS2节点:基于RCLPY的实战指南
  • GD32VW553开发板I2C驱动SHT20温湿度传感器移植实战
  • 阿里云DataWorks:一站式大数据开发治理平台全景解析
  • Qwen2-VL-2B-Instruct在Unity游戏开发中的应用:智能NPC视觉感知系统
  • 3个强力方案解决Blender 3MF文件处理难题:Blender3mfFormat解决方案
  • Ubuntu服务器磁盘爆满?Ncdu命令行神器5分钟帮你找出空间黑洞
  • 从DAGGER到DAD:模仿学习中的数据聚合技术演进与最新应用案例
  • Python+Ollama构建本地AI文档分析流水线:从PDF智能解析到结构化Excel输出
  • ZYNQ SD卡驱动与FATFS文件系统实战:从硬件配置到数据读写
  • 重构C/C++开发效率:Red Panda Dev-CPP的技术突破与实践指南
  • HY-Motion 1.0部署指南:两种规格模型,如何根据显存选择?
  • 开箱即用:Hunyuan-MT 7B翻译镜像,原文输入→一键翻译→实时展示
  • Android逆向实战:用Frida-DexDump轻松脱壳(附详细命令解析)
  • Qwen3-14B部署避坑指南:vLLM日志分析、模型加载失败排查与修复方案