前言
我觉得将日常生活中一些简单重复的任务交给AI Agent,是学习构建AI Agent应用一个很不错的开始。本次分享我以日常生活中一个总结论文的简单任务出发进行说明,希望对大家了解AI Agent有所帮助。任务可以是多种多样的,真的帮助自己提升了效率,那就是一个很不错的开始了!!
我的这个简单任务是这样的,有一篇文献,如下所示:

我想要对该文献进行总结,然后将md格式笔记保存。
我之前的做法是使用Cherry Studio新建一个论文总结助手,如下所示:

然后上传文献,进行总结,如下所示:

然后新建一个笔记md文件,将这些内容复制进去,这样就完成了一个简单的任务,如下所示:

虽然说已经比最开始的时候,只是将文献翻译一下,就直接开始读,然后尝试自己总结主要内容强太多了。但是还是有需要改进的地方,那就是选择文件,新建笔记文件,复制笔记内容这些简单重复的事,可以尝试一下把这些交给一个AI Agent!!
使用C#构建一个论文总结AI Agent相关实践
前几个月,当我刚开始尝试构建AI Agent应用的时候,经过测试,我发现在Semantic Kernel中,想要使用函数调用的话,只有OpenAI与Kimi的模型能用,而OpenAI模型的使用在国内是不太方便的,而构建一个AI Agent函数调用功能是必不可少的。经过一番探索,找到了一位大佬的方法,可以通过提示词来实现函数调用:
Semantic Kernel/C#:一种通用的Function Calling方法,文末附大模型清单
然后根据这个方法,做了一个简单的AI Agent项目进行介绍:
SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用
GitHub地址:https://github.com/Ming-jiayou/SimpleAIAgent
经过几个月的发展,我发现现在在Semantic Kernel中使用国内具有函数调用能力的模型效果也还行了。现在开始构建我们自己的AI Agent应用吧!!
为了尽量保持简单,不增加无关的心智负担,便于感兴趣的朋友自己动手,新建一个C#控制台项目。
实现这个简单的Demo可以有五种不同的方式:

第一种使用基本的Semantic Kernel中的Function calling with chat completion
相关文档:Function calling with chat completion | Microsoft Learn
第二种使用Semantic Kernel Chat Completion Agent
相关文档:Exploring the Semantic Kernel Chat Completion Agent (Experimental) | Microsoft Learn
第三种使用Microsoft.Extensions.AI
相关文档:extensions/src/Libraries/Microsoft.Extensions.AI.OpenAI at main · dotnet/extensions
第四种使用Semantic Kernel Open AI Assistant Agent
相关文档:Exploring the Semantic Kernel Open AI Assistant Agent (Experimental) | Microsoft Learn
第五种使用UniversalLLMFunctionCaller
我先使用第二种方式进行说明。
先安装这三个库:

实现这个AI Agent需要自己先写好一个总结论文的相关插件:
最初的插件:
[KernelFunction("ExtractPDFContent")]
[Description("读取指定路径的PDF文档内容")]
[return: Description("PDF文档内容")]
public string ExtractPDFContent(string filePath)
{
StringBuilder text = new StringBuilder();
// 读取PDF内容
using (PdfDocument document = PdfDocument.Open(filePath))
{
foreach (var page in document.GetPages())
{
text.Append(page.Text);
}
}
return text.ToString();
}
[KernelFunction]
[Description("根据文件路径与笔记内容创建一个md格式的文件")]
public void SaveMDNotes([Description("保存笔记的路径")] string filePath, [Description("笔记的md格式内容")] string mdContent)
{
try
{
// 检查文件是否存在,如果不存在则创建
if (!File.Exists(filePath))
{
// 创建文件并写入内容
File.WriteAllText(filePath, mdContent);
}
else
{
// 如果文件已存在,覆盖写入内容
File.WriteAllText(filePath, mdContent);
}
}

最低0.47元/天 解锁文章
2248

被折叠的 条评论
为什么被折叠?



