让AI响应稳定成指定格式:Semantic Kernel插件函数与函数调用行为实战指南
让AI响应稳定成指定格式Semantic Kernel插件函数与函数调用行为实战指南【免费下载链接】semantic-kernelIntegrate cutting-edge LLM technology quickly and easily into your apps项目地址: https://gitcode.com/GitHub_Trending/se/semantic-kernelSemantic Kernel 是一个帮你把大模型接进应用的开源框架。这篇文章从一个常见痛点出发——模型输出格式时好时坏、还不会主动查你的数据——拆解 Kernel、Function、FunctionChoiceBehavior 三个核心对象给你一条从克隆仓库到跑通第一次稳定调用的最小路径。场景为什么裸调大模型不够假设你在做一个客服机器人用户问我的订单到哪了你希望模型做两件事——先调用你写好的订单查询函数拿到真实数据再把结果按固定字段格式回复。直接调模型 API 时这两件事都不受控格式靠祈祷工具调用靠模型自觉。Semantic Kernel 把这件事拆成三个各司其职的对象。三个核心对象怎么分工Kernel所有请求的调度中心人话Kernel 是总机模型连接、插件注册、请求执行都经过它。技术定义Kernel 是框架的核心运行时持有已注册的 AI 连接器和插件集合你通过它调用提示词或函数。C# 侧入口在 dotnet/src/SemanticKernel.Abstractions/Kernel.csPython 侧在 python/semantic_kernel/kernel.py。验证方式创建一个 Kernel 后kernel.Plugins或 Python 的kernel.plugins能列出你注册的全部插件。Function模型能执行的两种活人话函数是插件里的最小工作单元分真代码和提示词两种。原生函数Native Function是 C#/Python 写的真实代码查数据库、算价格都靠它语义函数Semantic Function是一段提示词模板比如把用户问题改写成搜索关键词由大模型解释执行。两者可以互相调用、串成流水线。示例见 python/samples/concepts/functions/ 和 dotnet/samples/Concepts/Functions/。FunctionChoiceBehavior控制模型什么时候准用工具人话这是模型的工具使用纪律你可以让它自由决定、强制使用、或干脆禁用某个函数。技术上它定义了 Auto / Required / None 三种策略Auto 让模型自选是否调用Required 强制本次响应必须调用指定函数适合必须先查订单再回答的场景None 则只把函数描述给模型看、不实际执行可用于让用户先审批。源码在 dotnet/src/SemanticKernel.Abstractions/AI/FunctionChoiceBehaviors/FunctionChoiceBehavior.cs。从时序图能看清一轮对话的完整链路调用方创建 FunctionChoiceBehavior 并塞进请求配置 → AI 服务每次拿到模型响应前先向行为对象询问该给模型哪些函数 → 模型决定是否发起函数调用 → 框架自动执行函数并把结果回灌给模型 → 最终响应交还调用方。整个循环会持续进行直到模型不再请求工具为止。响应长什么样内容模型格式稳定的另一层保障是响应本身就是结构化对象而不是一坨字符串。Semantic Kernel 定义了 TextContent、ChatMessageContent、StreamingTextContent 等内容模型普通回复有 Text 和 Role流式回复额外带 ChoiceIndex 和增量文本OpenAI 连接器还会把函数调用信息FunctionName、参数挂到 ChatMessageContent 上。想解析模型到底调了哪个函数直接读这些字段即可不用正则抠原始文本。最小上手路径克隆仓库拿到完整源码git clone https://gitcode.com/GitHub_Trending/se/semantic-kernel然后按语言走各自的入门样本C# 从 dotnet/samples/GettingStarted/Step1_Create_Kernel.cs 开始核心就三步——Kernel kernel Kernel.CreateBuilder().AddOpenAIChatClient(modelId: gpt-4o, apiKey: KEY).Build(); string reply await kernel.InvokePromptAsync(用三句话总结{{$topic}});Python 侧参考 python/samples/concepts/functions/同样是建 Kernel → 加函数 → 带提示词调用。想体验 Required 策略在调用参数里传入对应配置观察日志里是否出现函数名即可验证强制调用生效。常见问题与排查方向模型不调用你注册的函数先用 Auto 策略确认函数名和描述模型看得见再换 Required 强制调用。仍不行就检查函数名是否含非法字符、描述是否含糊模型靠描述判断何时调用。模板变量没被替换确认变量语法是{{$var}}而非{{var}}模板格式声明要与使用的引擎一致Python 的 KernelPromptTemplate 会直接对格式名做校验并抛错。流式响应拼接出重复内容StreamingTextContent 每次只带增量片段累积时要按 ChoiceIndex 分组不要把每个分片的完整文本直接相加。继续深入术语和概念定义查 docs/GLOSSARY.md插件组织方式看 docs/PLUGINS.md提示词模板语法细节看 docs/PROMPT_TEMPLATE_LANGUAGE.md。想动手从 python/samples/concepts/ 或 dotnet/samples/Concepts/ 里挑一个目录每个子目录都是一个独立可跑的小例子。【免费下载链接】semantic-kernelIntegrate cutting-edge LLM technology quickly and easily into your apps项目地址: https://gitcode.com/GitHub_Trending/se/semantic-kernel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →