[MAF的Agent管道详解-04]如何让LLM按照要求的结构输出数据? - Artech

[MAF的Agent管道详解-04]如何让LLM按照要求的结构输出数据? - Artech

💡 原文中文,约8400字,阅读约需20分钟。
📝

内容提要

本文介绍了如何使用IChatClient的GetResponseAsync<T>方法提取个人信息。通过创建OpenAIClient的IChatClient对象,可以从文本中提取信息并生成Profile对象。示例中定义了Profile类,并通过调用GetResponseAsync<Profile>方法获取响应,验证提取的信息是否正确。

🎯

关键要点

  • IChatClient的GetResponseAsync<T>方法可以通过重载实现结构化输出。

  • 该方法利用JsonSerializerOptions生成ChatResponseFormatJson对象,并作为ChatOptions的ResponseFormat属性。

  • 通过调用GetResponseAsync<Profile>方法,可以从文本中提取个人信息并生成Profile对象。

  • 示例中定义了Profile类,并通过调试断言验证提取的信息是否正确。

  • 发送的请求和接收的响应中包含针对Profile类型的JSON Schema,确保生成的输出符合结构要求。

延伸问答

IChatClient的GetResponseAsync<T>方法有什么作用?

该方法用于提取个人信息并生成结构化的Profile对象。

如何使用GetResponseAsync<Profile>方法提取个人信息?

通过创建IChatClient对象并调用GetResponseAsync<Profile>方法,可以从文本中提取个人信息。

GetResponseAsync<T>方法的返回值是什么?

返回一个ChatResponse<T>对象,其中包含反序列化后的Profile对象。

如何确保生成的输出符合结构要求?

通过在请求中包含针对Profile类型的JSON Schema来确保输出符合结构要求。

Profile类的定义是什么?

Profile类包含Name、Gender和Age属性,并实现了IEquatable接口。

如何验证提取的信息是否正确?

通过调试断言比较提取的Profile对象与预设的Profile对象是否相等。

➡️

继续阅读