首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Semantic Kernel/C#:一种通用的Function Calling方法,文末附经测试可用的大模型

编程知识
2024年08月29日 06:53

Funcion Calling介绍

函数调用允许您将模型如gpt-4o与外部工具和系统连接起来。这对于许多事情都很有用,比如为AI助手赋能,或者在你的应用程序与模型之间建立深度集成。

如果您了解或者使用过Semantic Kernel可能会发现除了OpenAI支持Function Calling的模型之外,自动函数调用好像并不好用,国产大模型几乎都不能使用,由于想解决这个问题,在GitHub上找到了一个大佬的方法。

GitHub地址:https://github.com/Jenscaasen/UniversalLLMFunctionCaller

大佬是通过提示工程与Semantic Kernel中调用本地函数的原理来做的,我看了大佬的代码,将提示词改为了中文,可能会更适用于国产大模型。

之前写了一篇文章:如何让其他模型也能在SemanticKernel中调用本地函数介绍了这个方法。

但是当时自己并没有开源项目,感兴趣的朋友,没有办法快速地上手体验,只能自己重新来一遍,现在已将这部分内容集成到我的开源项目SimpleRAG中,感兴趣的朋友只需填入自己的API Key即可快速体验,也可以方便地查看代码了。

GitHub地址:https://github.com/Ming-jiayou/SimpleRAG

一种通用的Function Calling方法

在开始介绍之前,先看一下效果:

对比一下不使用FunctionCalling的效果:

image-20240828162455519

再来一个示例:

对比不使用Function Calling的效果:

image-20240828162754671

具体代码可在GitHub中查看,这里重点介绍一下实现的过程。

这里以Qwen2-7B-Instruct为例。

首先创建一个Kernel:

image-20240828163952619

在Kernel中导入插件:

image-20240828164048682

以上只是用于测试的模拟函数。

只需这样写即可:

image-20240828165221419

现在探究一下里面的过程。

首先将插件转化为文本:

image-20240828165354209

image-20240828165413278

在对话历史中加入示例:

image-20240828165513048

image-20240828165557673

在对话历史中加入一个指令:

image-20240828165704135

image-20240828165801213

将所有可用的函数嵌入到这个Prompt中了,如下所示:

image-20240828165901365

将指令加入到对话历史中了,如下所示:

image-20240828170031287

让LLM根据任务选择应该先调用哪个函数或者不用调用函数:

image-20240828170139513

LLM返回完成这个任务需要调用的函数:

image-20240828170317084

验证这个函数:

image-20240828170348135

调用插件中的函数:

image-20240828170514946

image-20240828170607398

image-20240828170626711

第一个函数返回的结果:

image-20240828170658135

再向LLM发送请求,现在该调用哪个函数,LLM的返回如下所示:

image-20240828170756097

同样执行插件中的第二个函数:

image-20240828170846964

第二个函数的返回:

image-20240828170917273

然后再向LLM发送请求:

image-20240828171024714

调用的函数名为Finished,表示流程已完成,可以跳出来了,如下所示:

image-20240828171128972

获得了最后的信息:

image-20240828171224711

结果如下所示:

image-20240828171253353

以上就是这个方法的大概流程,具体实现可以看GitHub开源的代码。

经过测试这种方法可用的LLM

平台可用模型
硅基流动 Llama-3.1-405/70/8B、Llama-3-70/8B-Instruct、DeepSeek-V2-Chat、deepseek-llm-67b-chat、Qwen2-72/57/7/1.5B-Instruct、Qwen2-57B-A14B-Instruct、Qwen1.5-110/32/14B-Chat、Qwen2-Math-72B-Instruct、Yi-1.5-34/9/6B-Chat-16K、internlm2_5-20/7b-chat
讯飞星火 Spark Lite、Spark Pro-128K、Spark Max、Spark4.0 Ultra
零一万物 yi-large、yi-medium、yi-spark、yi-large-rag、yi-large-fc、yi-large-turbo
月之暗面 moonshot-v1-8k、moonshot-v1-32k、moonshot-v1-128k
智谱AI glm-4-0520、glm-4、glm-4-air、glm-4-airx、glm-4-flash、glm-4v、glm-3-turbo
DeepSeek deepseek-chat、deepseek-coder
阶跃星辰 step-1-8k、step-1-32k、step-1-128k、step-2-16k-nightly、step-1-flash
Minimax abab6.5s-chat、abab5.5-chat
阿里云百炼 qwen-max、qwen2-math-72b-instruct、qwen-max-0428、qwen2-72b-instruct、qwen2-57b-a14b-instruct、qwen2-7b-instruct

以上不一定完备,还有一些模型没测,欢迎大家继续补充。

From:https://www.cnblogs.com/mingupupu/p/18385798
本文地址: http://shuzixingkong.net/article/1541
0评论
提交 加载更多评论
其他文章 折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之日志管理
Quickwit 从底层构建,旨在 高效地索引非结构化数据,并在云存储上轻松搜索这些数据。 此外,Quickwit 开箱即支持 OpenTelemetry gRPC 和 HTTP(仅 protobuf)协议,并提供了一个 REST API,可以接收任何 JSON 格式的日志。 这让 Quickwit
折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之日志管理 折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之日志管理 折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之日志管理
[golang]查询ssl证书剩余有效天数并邮件提醒
前言 自从云厂商的免费ssl证书改成3个月,而且证书数量还是20个之后,自己网站的ssl证书就换成了其它免费方案。但是免费方案不会提醒证书过期,所以写个工具每天定时查询证书剩余有效天数,如果证书即将过期,就发送邮件提醒。 基本实现 最基本的代码功能就是检测网站ssl证书的有效天数,可以用命令行传参的
记录荒废了三年的四年.net开发的第三次面试,苏州斯莱克
现在就业的确崩了 这次面试的时间是8月28号。距离上一次面试已经过去了一个月了,距离开始找工作已经过去了2个月。没多少找工作经验的我也体会到了什么叫就业崩了。 看了一线码农的采访计划后,我也把苏州列为了找工作的地方之一。我成都感觉公司都翻烂了 要么工资高,15000,但要求开发测试运维一条龙,什么.
最简最速!C++版OpenCV安装配置教程Win/Mac!!!
Clion+OpenCV(C++版)开发环境配置教程Win/Mac 平时在学习和比赛的时候都是使用的Python版本的OpenCV,最近遇到了一个项目使用的上位机性能有限于是决定视觉方面使用C++的OpenCV来节约上位机资源提高运行的速度,在查阅了网上的各种资料后发现这些资料参差不齐有些博客的方法
最简最速!C++版OpenCV安装配置教程Win/Mac!!! 最简最速!C++版OpenCV安装配置教程Win/Mac!!! 最简最速!C++版OpenCV安装配置教程Win/Mac!!!
什么是算法?一切皆算法
如果有人问我什么算法?我就一句话:算法就是对一类问题的最优求解路径。 1、计算机领域的算法概念 算法一直都是计算机领域非常重要的概念,具备极高的地位,各个公司对算法的考察也非常热衷。 我们只有在数学、计算机和人工智能领域会听到算法的概念,再加上似乎没人能讲清楚算法的概念。所以,一听到算法,很多人以为
什么是算法?一切皆算法
推荐一个Python打造的开源自动驾驶平台:Donkeycar!
1、引言 随着人工智能和自动驾驶技术的飞速发展,自动驾驶车辆的研究和开发成为了科技领域的热点。对于初学者、爱好者和学生而言,一款易于上手且功能强大的自动驾驶平台显得尤为重要。Donkeycar正是这样一款开源项目,它提供了一个轻量级、模块化的Python自驾车库,旨在促进快速实验和社区参与。本文将详
推荐一个Python打造的开源自动驾驶平台:Donkeycar! 推荐一个Python打造的开源自动驾驶平台:Donkeycar!
PCSR:已开源,三星提出像素级路由的超分辨率方法 | ECCV 2024
基于像素级分类器的单图像超分辨率方法(PCSR)是一种针对大图像高效超分辨率的新方法,在像素级别分配计算资源,处理不同的恢复难度,并通过更精细的粒度减少冗余计算。它还在推断过程中提供可调节性,平衡性能和计算成本而无需重新训练。此外,还提供了使用K均值聚类进行自动像素分配以及后处理技术来消除伪影。 来
PCSR:已开源,三星提出像素级路由的超分辨率方法 | ECCV 2024 PCSR:已开源,三星提出像素级路由的超分辨率方法 | ECCV 2024 PCSR:已开源,三星提出像素级路由的超分辨率方法 | ECCV 2024
Mono 现状与未来:从Wine-mono 到.NET 9
Mono 官网主页[1]和 Mono GitHub 页面今日发布公告[2],微软宣布将 Mono 项目移交给 WineHQ 组织,也就是 Linux 兼容 Windows 应用框架 Wine 的开发团队。微软从 2014 年开始向.NET 开源发展,当时微软宣布.NET Core即将开源[3]。然而
Mono 现状与未来:从Wine-mono 到.NET 9