基于CodeDefined Skill与 Agent Framework 的实践探索
上一节我们讲了 File-Based Skill这一节介绍另外一种方式直接用代码来写 Skill。简单说一下区别File-Based用 SKILL.md 脚本 资源文件Code-Defined全部写在代码里1. 创建项目 安装包先建一个控制台项目然后把依赖装上dotnet add package Azure.AI.OpenAI --version 2.9.0-beta.1 dotnet add package Azure.Identity --version 1.21.0 dotnet add package Microsoft.Agents.AI.OpenAI --version 1.1.0这里最关键的是Microsoft.Agents.AI里面有个类叫AgentInlineSkill就是我们这节要用的核心。2. 定义一个 Skill我们还是用单位转换这个例子简单直观一点。先看整体代码var unitConverterSkill new AgentInlineSkill( name: unit-converter, description: 用于常见单位之间的转换, instructions: 当用户需要做单位转换时 1. 查 conversion-table 找系数 2. 查 conversion-policy 看规则 3. 调用 convert 脚本计算 )这一段其实就是在告诉 Agent什么时候用我以及怎么用我① 静态资源直接写死在代码里.AddResource( conversion-table, | 从 | 到 | 系数 | |------|------|----------| | 英里 | 公里 | 1.60934 | | 公里 | 英里 | 0.621371 | | 磅 | 千克 | 0.453592 | | 千克 | 磅 | 2.20462 | )就是一张表没什么特别的。② 动态资源运行时生成.AddResource(conversion-policy, () { const int Precision 4; return $ 小数位{Precision} 时间{DateTime.UtcNow:O} ; })这个更像运行时配置可以根据情况动态变。③ 脚本直接写在代码里.AddScript(convert, (double value, double factor) { double result Math.Round(value * factor, 4); return JsonSerializer.Serialize(new { value, factor, result }); });就是一个函数。Agent 需要的时候会自动调这个。完整源代码3. 注册 Skillvar skillsProvider new AgentSkillsProvider(unitConverterSkill);可以理解成把我们的skill放在技能包里面。4. 创建 AgentAIAgent agent new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .GetResponsesClient() .AsAIAgent(new ChatClientAgentOptions { Name UnitConverterAgent, ChatOptions new() { Instructions 你是一个可以做单位转换的助手, }, AIContextProviders [skillsProvider], }, model: deploymentName);关键点就一个AIContextProviders [skillsProvider]把 Skill 挂进去就行了。5. 调用测试var sb new StringBuilder(); await foreach (var res in agent.RunStreamingAsync( 请用脚本计算26.2 英里是多少公里75 千克是多少磅)) { sb.Append(res.Text); } Console.WriteLine(sb.ToString());输出结果总结Code-Defined更像直接写死在代码里File-Based更像外挂插件。源代码地址https://github.com/bingbing-gui/dotnet-platform/tree/master/src/09-AI-Agent/Agent-Framework/29-CodeDefined-Agent-Skills
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2552058.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!