用 Azure OpenAI + Microsoft Agents 写一个真正“像人一样”的 AI最近在用 Azure OpenAI 写 AI 的时候,发现一个很现实的问题:
模型是很强,但你每次都得从零开始教它怎么做人
于是就开始用 Microsoft Agent Framework。用下来最大的感受就一句话:它不是让你“调用模型”,而是让你“养一个 AI”。
先讲点原理
以前我们是怎么用大模型的?
很真实的一种写法:
“你是一个 C# 程序员……
你要遵循 SOLID……
你要写完整代码……
你要加注释……”
然后把这一坨 Prompt 丢给模型。
问题是:
每次都要写一堆“你是谁”
多轮对话很容易串
想流式输出?还得自己拆 token
业务一复杂,Prompt 就开始失控
本质上就是一句话:你在手写一个很不稳定的“伪 Agent”。
Agent Framework 到底帮你干了什么?
Agent Framework 干的事,其实特别朴素。
它帮你把下面这些东西拆开并固定下来:
(1)你是谁(角色)
比如:
你是一个资深 C# 工程师
你遵循企业级代码规范
你不写垃圾代码
这些不应该每次都写 Prompt,而是 Agent 的“人设”。
(2)你怎么说话(行为规则)
用中文
不废话
代码一次性给全
有设计思路再写代码
这更像是工作规范,而不是一次性指令。
(3)你记得住前面聊了啥
Agent 会帮你处理上下文,你不需要:
自己拼历史消息
自己区分 system / user / assistant
你只管继续“跟这个人说话”。
(4)流式输出是标配
你不用自己研究:
token
partial response
callback
Agent 天生就支持一边生成一边吐结果。
换个更接地气的说法
不用官方定义,我直接给你一个比喻:Agent 就是一个你已经培训好的 AI 同事。
模型是他的“大脑”
Instructions 是他的“入职培训 + 工作手册”
Agent 是他这个“人”
你以后不是在“调用模型”,
而是在说:“老王,帮我写个注册模块。”
Azure OpenAI 在这里扮演什么角色?
Azure OpenAI:提供稳定、企业级的模型服务
Agent Framework:负责“怎么用这个模型”
一个管算力和模型,一个管怎么干活。
上代码
using Azure.AI.OpenAI;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using System.ClientModel;
class Program
{
static async Task Main()
{
var agent = CreateAzureAgent();
await foreach (var message in agent.RunStreamingAsync(
“给我定义一个注册实体类,并实现 Service。”))
{
Console.Write(message);
}
}
static AIAgent CreateAzureAgent()
{
// 从本地文件读取 Azure OpenAI 配置
var lines = File.ReadAllLines(“C:/gpt/azure_key.txt”);
var deploymentName = lines[0];
var endpoint = lines[1];
var apiKey = lines[2];
var credential = new ApiKeyCredential(apiKey);
// 这里就是给 AI 定“人设”的地方
var instructions = “””
你是一名经验丰富的 C# / .NET 程序员。
– 熟悉 .NET、OOP、SOLID 原则
– 能写企业级、可维护的代码
– 命名规范必须清晰
– 先说设计思路,再给完整代码
– 不要零碎输出
回答使用中文,代码要加必要注释。
“””;
var agent =
new AzureOpenAIClient(new Uri(endpoint), credential)
.GetChatClient(deploymentName)
.AsIChatClient()
.AsAIAgent(
instructions: instructions,
name: “DotNetProgrammer”);
return agent;
}
}
因为Microsoft Agent为让大家能准确运行起代码,这里把项目文件也分享出来,以便三方包的版本统一。
Exe net10.0 enable enable
运行结果:
声明:来自硅基-桂迹,仅代表创作者观点。链接:https://eyangzhen.com/5816.html