Microsoft Agent Framework + Kimi API 实战:控制台应用跑通单次与多轮 Agent 对话
使用 Kimi 的 OpenAI 兼容接口实现单次对话实现多轮对话基于 Session 保留上下文你把代码复制后只要配置好KIMI_API_KEY就能跑起来。环境准备.NET SDK 9.0Kimi API Key一个控制台项目创建项目并安装依赖dotnet new console -n AgentConsoleAppcd AgentConsoleAppdotnet add package Microsoft.Agents.AIdotnet add package Microsoft.Agents.AI.OpenAIdotnet add package OpenAI开发实战一、配置 Kimi API 的访问参数注意在实际开发中确保妥善保管 API 密钥避免泄露。我这里把密钥放在了环境变量中代码中通过读取环境变量来获取密钥。macOS / Linuxexport KIMI_API_KEY你的 kimi_api_key 放这里export KIMI_MODELmoonshot-v1-8kexport KIMI_BASE_URLhttps://api.moonshot.cn/v1Windows PowerShell$env:KIMI_API_KEY你的 kimi_api_key 放这里$env:KIMI_MODELmoonshot-v1-8k$env:KIMI_BASE_URLhttps://api.moonshot.cn/v1读取环境变量的配置类internal sealed class KimiSettings{public required string ApiKey { get; init; }public required string Model { get; init; }public required string BaseUrl { get; init; }public static KimiSettings FromEnvironment(){var apiKey Environment.GetEnvironmentVariable(KIMI_API_KEY);var model Environment.GetEnvironmentVariable(KIMI_MODEL) ?? moonshot-v1-8k;var baseUrl Environment.GetEnvironmentVariable(KIMI_BASE_URL) ?? https://api.moonshot.cn/v1;if (string.IsNullOrWhiteSpace(apiKey)){throw new InvalidOperationException(缺少环境变量 KIMI_API_KEY。);}return new KimiSettings{ApiKey apiKey,Model model,BaseUrl baseUrl};}}二、完整 Program.cs含单次对话 多轮对话把下面代码放到Program.csusing Microsoft.Agents.AI;using OpenAI;using OpenAI.Chat;using System.ClientModel;var settings KimiSettings.FromEnvironment();var openAiOptions new OpenAIClientOptions{Endpoint new Uri(settings.BaseUrl)};var chatClient new ChatClient(model: settings.Model,credential: new ApiKeyCredential(settings.ApiKey),options: openAiOptions);var agent chatClient.AsAIAgent(name: KimiConsoleAgent,instructions: 你是一个专业、简洁的 .NET 助手。回答优先给结论再给关键步骤。,description: Console demo agent with Kimi API);Console.WriteLine( Microsoft Agent Framework Kimi API Demo );Console.WriteLine($Model: {settings.Model});Console.WriteLine();await RunSingleTurnAsync(agent);await RunMultiTurnAsync(agent);static async Task RunSingleTurnAsync(ChatClientAgent agent){Console.WriteLine([单次对话]);var question 请用 3 句话解释 .NET 中 async/await 的作用。;var response await agent.RunAsync(question);Console.WriteLine($你: {question});Console.WriteLine($Agent: {response.Text});Console.WriteLine();}static async Task RunMultiTurnAsync(ChatClientAgent agent){Console.WriteLine([多轮对话]);Console.WriteLine(输入 exit 退出。\n);// 关键点同一个 session 会保留上下文实现多轮会话。var session await agent.CreateSessionAsync();while (true){Console.Write(你: );var input Console.ReadLine();if (string.IsNullOrWhiteSpace(input)){continue;}if (input.Equals(exit, StringComparison.OrdinalIgnoreCase)){Console.WriteLine(会话结束。);break;}try{var response await agent.RunAsync(input, session);Console.WriteLine($Agent: {response.Text}\n);}catch (Exception ex){Console.WriteLine($调用失败: {ex.Message}\n);}}}第三方大模型服务接口可以使用New ChatClient直接调用为了演示 Microsoft Agent Framework 的能力我们通过AsAIAgent把它封装成一个 Agent。这样就能享受 Agent Framework 带来的对话管理、上下文保持等特性。三、运行与验证执行dotnet run我跑了两次对话效果如下建议你也在第二次对话中验证“多轮上下文是否生效”第一轮我叫小a是.net开发第二轮你记得我叫什么吗如果第二轮能回答出“小a”说明 Session 已承载上下文。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2494246.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!