找回密码
 立即注册
首页 业界区 业界 C#学习:构建一个更真实的基于LLM的简历评估系统 ...

C#学习:构建一个更真实的基于LLM的简历评估系统

嗳歉楞 前天 10:27
前言

昨天的Demo以txt文件为例进行说明,并且评估标准写死了,跟真实的简历评估系统差别太大了。今天分享的是经过改进后更加真实的基于LLM的简历评估系统。
使用AI生成了5份不同的简历,如下所示:
程序员A:
1.png

程序员B:
2.png

程序员C:
3.png

程序员D:
4.png

程序员E:
5.png

输入要求:
  1. shared["requirements"] = """
  2.      - 具备前端开发能力
  3.      - 使用过Vue
  4.      """;
复制代码
效果:
6.png

更改要求:
  1.    shared["requirements"] = """
  2.        - 具备后端开发能力
  3.        - 熟悉go语言
  4.        """;
复制代码
7.png

全部代码已上传至GitHub,地址:https://github.com/Ming-jiayou/PocketFlowSharp/tree/main/PocketFlowSharpSamples.Console/Real_Resume_Qualification_Demo
C#读取PDF内容

本次更改主要涉及到C#读取PDF内容。
使用的是pdfpig,项目地址:https://github.com/UglyToad/PdfPig
8.png

项目简介:使用 C# 读取和提取 PDF 中的文本和其他内容(PDFBox 的移植)
修改Utils类,增加读取PDF内容功能:
  1. public static string ExtractTextFromPdf(string pdfPath)
  2. {
  3.      StringBuilder text = new StringBuilder();
  4.      using (PdfDocument document = PdfDocument.Open(pdfPath))
  5.      {
  6.          foreach (Page page in document.GetPages())
  7.          {
  8.              text.AppendLine(page.Text);
  9.          }
  10.      }
  11.      return text.ToString();
  12. }
复制代码
效果如下所示:

灵活更改简历要求

可以将要求存入共享内存,然后通过$插值字符串,插入到提示词中即可:
  1.                 string prompt = $@"
  2. 评估以下简历并确定候选人是否符合职位的要求。
  3. 资格标准:
  4. {requirements}
  5. 简历内容:
  6. {content}
  7. 请以YAML格式返回您的评估:
  8. ```yaml
  9. candidate_name: [候选人姓名]
  10. qualifies: [true/false]
  11. reasons:
  12.   - [资格认定/不认定的第一个原因]
  13.   - [第二个原因(如果适用)]
  14. ```
  15. ";
复制代码
运行时就会变成这样:
10.png

与LLM交互
  1.   public static string ModelName { get; set; }
  2.   public static string EndPoint { get; set; }
  3.   public static string ApiKey { get; set; }
  4.   public static string CallLLM(string prompt)
  5.   {
  6.       ApiKeyCredential apiKeyCredential = new ApiKeyCredential(ApiKey);
  7.       OpenAIClientOptions openAIClientOptions = new OpenAIClientOptions();
  8.       openAIClientOptions.Endpoint = new Uri(EndPoint);
  9.       ChatClient client = new(model: ModelName, apiKeyCredential, openAIClientOptions);
  10.       ChatCompletion completion = client.CompleteChat(prompt);
  11.       return completion.Content[0].Text;
  12.   }
复制代码
以上就是通过这个Demo可以学习到的一些内容。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册