Semantic Kernel:Agent代理
在生成式AI中,代理通常指的是能够自主生成或操作数据的系统或模型。这些代理可以在多种场景中发挥作用,包括文本生成、图像和视频制作、音乐创作,以及数据分析和模拟。以下是一些代理在生成式AI中的具体作用和好处:
增强创造性:代理可以生成新颖的创意,如艺术作品、音乐或文学文本,帮助艺术家和创作者超越传统思维限制。
自动化内容生产:在媒体和娱乐行业,代理能够自动生成新闻报道、社交媒体帖子或其他类型的内容,大大提高效率并降低成本。
个性化体验:生成式AI代理可以根据用户的喜好和历史行为来个性化内容,如推荐系统中的个性化播放列表或新闻摘要。
辅助决策与模拟:在商业和科研领域,代理可以生成模拟数据或预测模型,帮助企业和研究人员分析市场趋势、进行风险评估或开发新产品。
教育和培训:教育领域的代理可以创建定制的学习材料和模拟考试,为学习者提供个性化的学习经验,同时减轻教师的负担。
语言处理与翻译:代理能够自动处理和翻译语言,使跨语言交流变得更加便捷,也能提供语言学习的辅助工具。
下面是一个翻译者的代理和一个审核者的代理,让他们互动起来:
using Microsoft.SemanticKernel.Experimental.Agents; using System.Text; #pragma warning disable SKEXP0101 namespace Demo08_Agent { internal class Program { static string key; static string chatModelId; static List<IAgent> agents; static async Task Main(string[] args) { key = File.ReadAllText(@"C:\GPT\key.txt"); chatModelId = "gpt-4-turbo"; agents = new List<IAgent>(); Console.WriteLine("======== 开始协作 ========"); IAgentThread? agentThread = null; try { // 创建翻译者 var translator = await CreateTranslatorAsync(); // 创建审核者 var auditor = await CreateAuditorAsync(); // 创建协作线程,两个代理都向其中添加消息。 agentThread = await translator.NewThreadAsync(); var prompt = new StringBuilder(); prompt.AppendLine("把下面中文翻译成日文:"); prompt.AppendLine("-----------------"); prompt.AppendLine(File.ReadAllText("content.txt")); // 添加用户留言 var messageUser = await agentThread.AddUserMessageAsync(prompt.ToString()); DisplayMessages(null, ConsoleColor.White, messageUser); var times = 1; bool isComplete = false; do { times++; // 启动翻译者工作 var agentMessages = await agentThread.InvokeAsync(translator).ToArrayAsync(); DisplayMessages(translator, ConsoleColor.Green, agentMessages); // 启动审核工作 agentMessages = await agentThread.InvokeAsync(auditor).ToArrayAsync(); DisplayMessages(auditor, ConsoleColor.Yellow, agentMessages); // 评估是否达到目标。 if (agentMessages.First().Content.Contains("采用它", StringComparison.OrdinalIgnoreCase)) { isComplete = true; } if (times > 3) { isComplete = true; } } while (!isComplete); } finally { // 清理 await Task.WhenAll(agents.Select(a => a.DeleteAsync())); } } static async Task<IAgent> CreateTranslatorAsync() { var agent = await new AgentBuilder() .WithOpenAIChatCompletion(chatModelId, key) .WithInstructions("您是一位中文日文的翻译家,以严谨闻名。你全神贯注于手头的目标。翻译成准确,高质量的译文。完善翻译内容时,请考虑翻译审核员的建议。") .WithName("翻译家") .WithDescription("翻译家") .BuildAsync(); return agent; } static async Task<IAgent> CreateAuditorAsync() { var agent = await new AgentBuilder() .WithOpenAIChatCompletion(chatModelId, key) .WithInstructions("你是一位中日文翻译的翻译审核员,你有丰富的翻译和审核经验,对翻译质量有较高的要求,总是严格要求,反复琢磨,以求得到更为准确的翻译。目标是确定给定翻译否符合要求,是否采用。如果不符合要求,提出你的建议给翻译家,但不要把翻译内容给对方。如果翻译内容可以接受并且符合您的标准,请说:采用它。") .WithName("翻译审核员") .WithDescription("翻译审核员") .BuildAsync(); return agent; } static void DisplayMessages(IAgent? agent = null, ConsoleColor color = ConsoleColor.White, params IEnumerable<IChatMessage> messages) { foreach (var message in messages) { Console.ResetColor(); Console.ForegroundColor = color; if (agent != null) { Console.WriteLine($"{agent.Name}({message.Role}): {message.Content}"); } else { Console.WriteLine($"({message.Role}): {message.Content}"); } Console.ResetColor(); } } } }
执行的结果如下:
文章来源微信公众号
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端