横峰县城乡建设网站wordpress 网页制作
2026/1/19 13:42:55 网站建设 项目流程
横峰县城乡建设网站,wordpress 网页制作,用ps设计网页页面,旅游网站建设技术解决方案在构建现代 .NET 应用程序时#xff0c;依赖注入#xff08;Dependency Injection, DI#xff09;是一种核心设计模式#xff0c;有助于实现解耦、可测试性和模块化。Microsoft Agent Framework 原生支持这一模式#xff0c;使得将 AI Agent 集成到现有 .NET 生态变得简单…在构建现代 .NET 应用程序时依赖注入Dependency Injection, DI是一种核心设计模式有助于实现解耦、可测试性和模块化。Microsoft Agent Framework 原生支持这一模式使得将 AI Agent 集成到现有 .NET 生态变得简单。在这个例子中深度解析如何通过 .NET 通用主机 (Generic Host) 将 AI Agent 注册为服务并在后台服务中优雅地使用它。示例概览该示例展示了一个名为 “Joker” 的 AI Agent用来讲发生在茶馆里的 笑话。核心演示如何配置 HostApplicationBuilder如何将 AIAgent 及其依赖项注册到 DI 容器中如何在 IHostedService 中通过构造函数注入使用 Agent代码深度解析环境准备与主机构建首先从环境变量中获取 Azure OpenAI 配置并创建 Host 构建器。var endpoint Environment.GetEnvironmentVariable(AZURE_OPENAI_ENDPOINT) ?? throw new InvalidOperationException(AZURE_OPENAI_ENDPOINT is not set.); var deploymentName Environment.GetEnvironmentVariable(AZURE_OPENAI_DEPLOYMENT_NAME) ?? gpt-4o-mini; // 创建 Host 构建器这是 .NET 应用依赖注入的基础 HostApplicationBuilder builder Host.CreateApplicationBuilder(args);核心依赖注入注册拆分并注册 Agent 的各个组件。注册 Agent 选项将 Agent 配置如名称、角色指令注册为单例做到配置与逻辑分离。builder.Services.AddSingleton(new ChatClientAgentOptions { Name Joker, ChatOptions new() { Instructions 你是一位江湖说书人擅长用幽默、接地气的方式讲笑话和故事。 } });注册 ChatClient使用 Keyed Service使用 .NET 的 Keyed ServicesAddKeyedChatClient便于区分多个模型或后端通过不同的 Key使用 AzureCliCredential 无密钥认证builder.Services.AddKeyedChatClient(AzureOpenAI, sp new AzureOpenAIClient( new Uri(endpoint), new AzureCliCredential()) .GetChatClient(deploymentName) .AsIChatClient());注册 AI Agent从容器获取 Keyed ServiceIChatClient获取配置选项ChatClientAgentOptions组装并返回 ChatClientAgentbuilder.Services.AddSingletonAIAgent(sp new ChatClientAgent( chatClient: sp.GetRequiredKeyedServiceIChatClient(AzureOpenAI), options: sp.GetRequiredServiceChatClientAgentOptions()));消费服务构建 Hosted Service注册后台服务并运行主机。builder.Services.AddHostedServiceSampleService(); using IHost host builder.Build(); await host.RunAsync().ConfigureAwait(false);服务实现细节SampleService构造函数注入利用主构造函数语法声明对 AIAgent 的依赖启动时由 DI 自动注入 “Joker”。internal sealed class SampleService(AIAgent agent, IHostApplicationLifetime appLifetime) : IHostedService { private AgentThread? _thread; // ... }生命周期管理与线程在 StartAsync 中创建 AgentThread用于保存会话上下文。public async Task StartAsync(CancellationToken cancellationToken) { this._thread agent.GetNewThread(); _ this.RunAsync(appLifetime.ApplicationStopping); }AgentThread 表示对话上下文历史服务存活期间对话记忆保持交互循环与流式输出进入循环读取输入并以流式方式输出模型回复。// 核心交互逻辑 await foreach (var update in agent.RunStreamingAsync(input, this._thread, cancellationToken: cancellationToken)) { Console.Write(update); }RunStreamingAsync 接收用户输入和上下文逐字流式返回结果关键知识点总结配置与逻辑分离使用 ChatClientAgentOptions 解耦提示词与代码模块化设计KeyedChatClient 管理多个 AI 后端如 Azure OpenAI、Ollama可测试性依赖抽象 AIAgent单测可替换为 Mock标准范式基于 Microsoft.Extensions.Hosting适用于控制台、ASP.NET Core、Worker 等源代码地址https://github.com/bingbing-gui/aspnetcore-developer/tree/master/src/09-AI-Agent/Agent-Framework/09-DI

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询