使用C#构建一个论文总结AI Agent

前言

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

我的这个简单任务是这样的,有一篇文献,如下所示:

image-20250102100353781

我想要对该文献进行总结,然后将md格式笔记保存。

我之前的做法是使用Cherry Studio新建一个论文总结助手,如下所示:

image-20250102100813485

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

image-20250102101204179

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

image-20250102101513430

虽然说已经比最开始的时候,只是将文献翻译一下,就直接开始读,然后尝试自己总结主要内容强太多了。但是还是有需要改进的地方,那就是选择文件,新建笔记文件,复制笔记内容这些简单重复的事,可以尝试一下把这些交给一个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可以有五种不同的方式:

image-20250102103959346

第一种使用基本的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

相关文档:Jenscaasen/UniversalLLMFunctionCaller: A planner that integrates into Semantic Kernel to enable function calling on all Chat based LLMs (Mistral, Bard, Claude, LLama etc)

我先使用第二种方式进行说明。

先安装这三个库:

image-20250102105224219

实现这个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);
          }
      }
      
系统分析 在本系统中,有三类用户:系统管理员,教师和学生。三种不同的用户所具有的操作权限以及操作内容均不一样。 本选课系统给予教师很大的自主权,系统管理员只负责向系统中添加学生和教师的个人信息以及教学楼教室信息。系统管理员不参与开设课程、选择课程等,一切均由教师、学生等录网站自行完成。系统管理员设置一个选课时间段,在到达时间段以前,教师可以开设课程;到达时间段以后,学生可以登陆网站选择课程。 教师用户登陆网站后可以开设课程,为自己的课程编辑上课时间和地点,当系统中出现时间地点冲突的时候,系统向教师用户报告并推荐一个时间地点。每门课程可以是必修或则选修,教师为每门课程设置一个学分,并可以在课程结束后给予分数,如果学生及格,学生将获得该课程的学分。 对于学生用户,每个学生除了必须选择必修课程外,至少还要选择两门选修课程,学生可以对自己选课信息锁定,以免不小心被修改。当时候超过选课时段后,系统自动锁定学生的选课课程。系统可以根据学生的选课信息,生成一份学生自己的课表。课程结束后学生可登录网站查询成绩与学分。 根据上面的要求,从操作功能上可以分为两个类:一个是通用操作,主要实现用户的登录注销和修改密码等;另一种是为不同用户定制不同操作。 1。通用操作 (1)登录与注销 每个用户都可以用自己的帐号登录系统。用户操作完成后推出系统,注销后可以重新登录系统。 (2)修改密码 每个用户第一次登录都用默认密码(教师和学生与帐号一样)。 2。用户所具有功能 (1)系统管理员 设置选课时间段:系统管理员通过此项功能设置选课时段,只有在选课时间段里,学生才可以选择课程,超过次时间段,学生选课信息被自动所定,不得修改。 录入学生与教师个人信息:通过此项功能可以实现对教师和学生的个人信息添加删除。 录入教学楼教室信息:通过此项功能可以把学校里所有的教学楼教室的信息录入到系统中,以便教师在开设课程时候设置上课的教室。 (2)教师用户 显示和修改个人信息:教师用户登录系统后,可以查看和修改教师的个人信息,如姓名,电话,E-mail地址等。 开设课程:教师用户登录系统后,可以开设课程,可以设置该课程为必修课程或则选修课程,可以设置该课程的最大人数。教师还可以为该课程设置一个前导课程,若学生没有学习或则选择前导课程则不能选择该课程。 编辑课程上课时间:教师在开设了课程后,可以灵活地设置上课时间和地点。 给学生分数:课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若 及格,给予学生学分。 (3)学生用户 显示和修改个人信息:学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话等。 查看必修课程:学生登录后,可以查看所有的必修课程。查看该课程的信息,上课时间地点,开课教师信息等。 选择选修课程:学生登录系统后,在所有选修课程中可以选择至少两门选修课程。同时可以查看相关信息。 锁定选课信息:学生登录系统,确定了所选课程后,可以锁定自己的选课信息,以防被别人或则自己不小心修改。 查看最终选课信息:学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选,若所选课程少于两门,系统会提示选择的课程少于两门。 查看学分和成绩 课程结束后,学生登录系统可查看自己学习课程的成绩和已获的学分。 首页login.aspx DB_51aspx下为Sql数据库,附加即可 学生、教师和管理员的默认帐号分别为:011、006、admin,密码均为51aspx 论文文档文件夹下为毕业论坛、开题报告、系统分析及演示PPT等
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值