万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory
内容提要
本文介绍了使用Semantic Kernel和Kernel Memory框架进行AI开发的入门教程,包括配置环境、模型划分和应用场景,部署one-api、配置项目环境和使用插件函数,以及使用提示模板文件和配置提示词。
延伸解读
one-api 的代理作用与适用场景
文章指出,若无法直接使用 OpenAI 或 Azure OpenAI,可通过 one-api 将国产模型转换为 OpenAI 格式接口。one-api 作为代理层,统一了不同厂商的 API,使开发时无需逐个对接。它还支持创建二次代理 key 并配置额度,适合需要统一管理多模型访问或分享接口的场景。
模型选择与 tokens 消耗的关系
文章对比了 GPT-4 不同版本,如 gpt-4 与 gpt-4-32k 在最大 tokens 上的差异,并说明 tokens 越大支持的上下文越长。同时,聊天时提示词包含历史记录和背景知识,会导致 tokens 消耗增加。读者需根据实际需求选择模型版本,并注意控制提示词长度以管理成本。
提示词工程在开发中的实际影响
文章通过抬杠助手和意图识别示例,展示了提示词如何引导 AI 回复。使用 system 角色设定背景、明确输出格式(如 JSON),可以改变 AI 的行为。提示词设计直接影响回复质量,是开发聊天工具和知识库应用时的关键环节,需要结合场景反复调整。
Kernel Memory 的定位与当前局限
Kernel Memory 用于构建文档知识库,支持多种格式,通过向量搜索增强 AI 回答。但文章多次提到它仍是半成品,文档不完善,部分功能如 planners 也不成熟。读者可先通过 FastGPT 等开源系统理解知识库原理,再研究 Kernel Memory,并建议直接阅读源码以深入了解。
Q&A
学习 Semantic Kernel 和 Kernel Memory 需要先掌握深度学习底层知识吗?
不需要。文章指出,学习 AI 的目标是能够开发出有用的应用,而不需要深入底层知识。作者本人曾学习 Python、Tensorflow 和深度学习书籍,但发现这些知识太深奥,无法在短时间内学会,而且对做出应用帮助有限。因此本文的学习重点放在 Semantic Kernel 和 Kernel Memory 两个框架上,学会后可以编写聊天工具、知识库工具。
one-api 在对接 AI 模型时起什么作用?
one-api 的作用是支持各种大厂的 AI 接口,比如 Open AI、百度文心等,然后在 one-api 上创建一层新的、与 Open AI 一致的接口。这样一来开发应用时无需关注对接的厂商,不需要逐个对接各种 AI 模型,大大简化了开发流程。如果因为账号或网络原因不能直接使用 Open AI 或 Azure Open AI,可以使用国产 AI 模型,然后使用 one-api 转换成 Open AI 格式接口。
Semantic Kernel 中聊天对话的 prompt 通常包含哪些内容?
prompt 除了包含用户当前的问题,在聊天对话时还包含聊天记录,聊天记录越多,prompt 越长,导致 tokens 数量越多。此外,prompt 还可以包含一些相关的背景知识等。文章举例说明,打开对话还没开始用就扣了 438 个 tokens,是因为背景设定会出现在提示词里面,占用一部分 tokens。
如何让 AI 按照指定格式(如 JSON)回复?
可以通过提示词的方式,让 AI 以特定的格式回复内容。文章示例中,在提示词里要求 AI 使用 markdown 代码语法包裹 json,并给出格式示例,例如要求列出用户意图时使用 ```json { "intent": {intent} } ``` 的格式。注意该示例并非让 AI 直接回复 json,而是以 markdown 代码包裹 json。也可以去掉 markdown 语法,让 AI 直接回复 json。
Semantic Kernel 如何实现自动调用插件函数?
使用 Semantic Kernel 加载插件类后,Semantic Kernel 可以自动根据 AI 对话调用这些插件类中的函数。每个函数需要使用 [KernelFunction] 标识,并用 [Description] 特性设置注释信息,这些注释信息非常重要,AI 靠这些注释理解函数的功能作用。然后在聊天时开启函数调用,设置 ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions,AI 就会根据用户输入自动调用相应的插件函数。
Kernel Memory 构建知识库的基本原理是什么?
Kernel Memory 通过利用大型语言模型、嵌入和矢量存储来提取信息和生成记录,主要目的是提供文档处理相关的接口,最常使用的场景是知识库系统。其原理是:首先将 docx、pdf 等文档提取出文本,然后切割成多个段落,每一段都使用 AI 模型生成相关向量,将段落文本和向量都存储到支持向量的数据库中。用户提问时,首先在数据库中搜索,根据向量确定相似程度,把几个跟问题相关的段落拿出来,然后把这几段文本和用户的问题一起发给 AI,由 AI 进行总结回答。