本文属于【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的基础框架:
-
配置模块:加载Azure OpenAI的配置(Endpoint、API Key 、Deployment Name),确保能正常调用GPT-4模型,复用上一篇的配置逻辑,无需重复编写;
-
指令解析与任务规划模块:接收用户指令(如"总结一段文本"),通过Azure GPT-4模型解析指令、规划执行步骤(版暂不拆解复杂步骤,重点实现"指令→执行"的直接映射);
-
工具执行模块:根据规划的步骤,调用对应的工具(本篇先实现"文本总结"工具,后续逐步扩展文件处理、导出等工具),工具的核心逻辑复用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)
四、代码运行与测试
代码运行步骤简单,附测试成功示意图,方便你对照验证:


-
保存代码:将上述代码保存为agent_basic.py,放在本地文件夹(建议和上一篇的azure_config.json文件放在同一目录,避免配置读取失败);
-
运行代码:打开CMD,进入代码所在目录,执行命令 python agent_basic.py;
-
首次运行验证:若没有azure_config.json文件,会提示输入Azure的Endpoint、API Key、Deployment Name(可从Azure门户复制,和上一篇准备的一致,确保Deployment Name是GPT-4的部署名称);
-
功能测试(输入以下指令,验证Agent是否正常运行,对照示意图查看结果):

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

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


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

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

五、核心知识点讲解
- Agent核心逻辑讲解(理解底层原理)
Agent的运行流程:用户输入指令 → Agent解析指令(匹配工具) → 调用对应工具(文本总结,GPT-4驱动) → 返回结果,其中3个核心关键点需重点掌握:
-
tools字典:实现"工具名称→工具函数"的映射,后续添加新工具(如文件处理),只需在字典中添加对应映射即可,扩展性强;
-
parse_instruction函数:极简版用关键词匹配,降低理解和开发难度,后续将升级为"通过Azure GPT-4模型解析指令",实现更智能的任务识别(如识别复杂指令);
-
run函数:Agent的入口,串联"解析→调用→返回"的全流程,是Agent的核心控制逻辑,后续所有功能升级(如多轮记忆、批量处理),都会围绕这个入口扩展。
- 常见问题排查
运行代码时,若出现报错,可对照以下常见问题排查:
-
报错"配置不完整":检查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升级,同时继续补充对应的示意图,方便解升级逻辑。