【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

python 复制代码
from openai import AzureOpenAI
import json
import os

# ===================== 1. Azure OpenAI配置模块(复用+适配Agent) =====================
# 配置文件路径(和上一篇一致,保存Azure信息,避免每次输入)
CONFIG_FILE = "azure_config.json"

def load_azure_config():
    """加载Azure OpenAI配置,新增配置校验"""
    if os.path.exists(CONFIG_FILE):
        with open(CONFIG_FILE, "r", encoding="utf-8") as f:
            config = json.load(f)
        # 验证配置是否完整(Azure必备3个参数,适配GPT-4调用)
        required_keys = ["azure_endpoint", "api_key", "deployment_name"]
        if all(key in config for key in required_keys):
            return config
        else:
            raise ValueError("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):")
        }
        with open(CONFIG_FILE, "w", encoding="utf-8") as f:
            json.dump(config, f, ensure_ascii=False, indent=4)
        return config

# 初始化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驱动) =====================
def text_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  # 降低随机性,确保总结结果稳定
        )
        return response.choices[0].message.content.strip()
    except Exception as e:
        return f"文本总结失败(GPT-4调用异常):{str(e)}"

# ===================== 3. Agent核心模块(指令解析+任务规划+工具调用) =====================
class SimpleAzureAgent:
    def __init__(self):
        # 初始化Agent,加载工具(后续可添加更多工具,如文件处理)
        self.tools = {
            "文本总结": text_summary_tool  # 工具名称→工具函数的映射,方便Agent快速调用
        }
    
    def parse_instruction(self, instruction: str) -> dict:
        """解析用户指令,判断需要调用的工具(极简版:直接匹配工具名称,降低复杂度)"""
        # 这里用简单的关键词匹配,后续将升级为GPT-4智能解析,适配复杂指令
        for tool_name in self.tools.keys():
            if tool_name in instruction:
                return {
                    "tool_name": tool_name,
                    "content": instruction.replace(tool_name, "").strip(),  # 提取需要处理的文本内容
                    "status": "success"
                }
        # 若未匹配到工具,返回明确提示,引导用户输入正确指令
        return {
            "status": "fail",
            "message": "未识别到可处理的任务,请输入包含「文本总结」的指令(如:文本总结 今天的会议内容是...)"
        }
    
    def run(self, instruction: str) -> str:
        """Agent运行入口:串联「解析指令→调用工具→返回结果」全流程"""
        print(f"Agent接收指令:{instruction}")
        # 1. 解析用户指令,判断需要调用的工具
        parse_result = self.parse_instruction(instruction)
        if parse_result["status"] == "fail":
            return parse_result["message"]
        # 2. 调用对应的工具,执行具体任务
        tool_name = parse_result["tool_name"]
        content = parse_result["content"]
        if not content:
            return f"请输入需要{tool_name}的内容(如:{tool_name} 具体文本)"
        tool_func = self.tools[tool_name]
        result = tool_func(content)
        # 3. 返回处理结果,格式清晰,方便用户查看
        return f"Agent处理结果({tool_name}):\n{result}"

# ===================== 4. 测试Agent(直接运行,验证功能) =====================
if __name__ == "__main__":
    # 初始化Agent,加载GPT-4模型和工具
    agent = SimpleAzureAgent()
    print("✅ Azure极简Agent已启动(基于GPT-4驱动)")
    print("示例指令:文本总结 今天召开了项目会议,讨论了下一版本的功能迭代计划,确定了需求优先级,预计下周三完成开发任务。")
    print("输入「退出」即可结束运行")
    # 交互测试,模拟用户使用场景
    while True:
        user_input = input("\n请输入指令:")
        if user_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升级,同时继续补充对应的示意图,方便解升级逻辑。

相关推荐
东坡肘子2 小时前
50 岁的苹果和 51 岁的我 -- 肘子的 Swift 周报 #127
人工智能·swiftui·swift
灵机一物2 小时前
灵机一物AI智能电商小程序(已上线)-从“帮我买抽纸”到自动下单支付——大模型驱动全链路自动购物系统实战
人工智能·python·elasticsearch·小程序·fastapi·rag·langgraph
码上解惑2 小时前
基于 Spring AI Alibaba ReactAgent 辅助低代码表单设计的实现原理与实操步骤
人工智能·spring·低代码·ai
Pyeako2 小时前
自然语言学习--bert框架
人工智能·深度学习·学习·bert·lstm·自然语言学习
DS随心转插件3 小时前
ChatGPT或Gemini如何生成word文档
人工智能·ai·chatgpt·word·deepseek·ds随心转
芯跳加速3 小时前
AI 视频自动化学习日记 · 第一天
人工智能
csdn_aspnet10 小时前
如何用 C# 和 Gemma 3 在本地构建一个真正能完成工作的 AI 代理的
人工智能·ai·c#·gemma
啊哈哈哈哈哈啊哈哈10 小时前
边缘计算与轮廓检测
人工智能·opencv·计算机视觉
cskywit10 小时前
从DFL到无NMS推理:一文拆解YOLO26背后的工程取舍与数学原理
人工智能·机器学习