如何建网站做推广,wordpress 作者名称,河南城乡和住房建设厅网站,网络营销师报名官网沉默了一段时间#xff0c;最近都在研究AI大模型的产品落地应用#xff0c;我觉得这个function calling出来后#xff0c;对目前辅助办公有革命性的改变#xff0c;可以它来做什么呢#xff1f;我们先来调试看看#xff0c;chatgpt和文心大模型的ERNIE Bot支持这个#…沉默了一段时间最近都在研究AI大模型的产品落地应用我觉得这个function calling出来后对目前辅助办公有革命性的改变可以它来做什么呢我们先来调试看看chatgpt和文心大模型的ERNIE Bot支持这个chatgpt申请有一定门槛先以文心的为例账号的access_token申请我就不说了直接去飞桨飞桨AI Studio星河社区-人工智能学习与实训注册申请。安装那些自己直接看官方文档上代码 #coding:utf-8
import erniebot,json#记载模型
models erniebot.Model.list()#参数
erniebot.api_type aistudio
erniebot.access_token 你的token码messages [{role: user,content: 搜索用户李大锤的信息,},
]
functions [{name: get_current_temperature,description: 获取指定城市的气温,parameters: {type: object,properties: {location: {type: string,description: 城市名称,},time: {type: string,description: 时间,},unit: {type: string,enum: [摄氏度,华氏度,],},},required: [location,time,unit,],},responses: {type: object,properties: {temperature: {type: integer,description: 城市气温,},time: {type: string,description: 时间,},unit: {type: string,enum: [摄氏度,华氏度,],},},},},
{name: get_user_info,description: 获取用户信息,parameters: {type: object,properties: {username: {type: string,description: 用户名,},},required: [username,],},responses: {type: object,properties: {username: {type: string,description: 用户名,},birthday: {type: string,description: 用户生日,},hobby: {type: string,description: 用户爱好,},},},},
]
response erniebot.ChatCompletion.create(modelernie-bot,messagesmessages,functionsfunctions,
)
print(one:,response.get_result())
funcitons是一个数组里面可以定义多组方法类的数据上面我设置了2个方法一个是查询天气的一个是查询用户信息的我们截取一个片段看看
{name: get_user_info, #我们自己定义的函数名称description: 获取用户信息, #描述parameters: {type: object,properties: {username: {type: string,description: 用户名,},},required: [username,],},responses: {type: object,properties: {username: {type: string,description: 用户名,},birthday: {type: string,description: 用户生日,},hobby: {type: string,description: 用户爱好,},},},},
这格式是固定的parameters就是设置的参数可定义参数的名称类型描述responses就是返回的结果参数这里主要就是定义好方法类及参数这是执行的调用写法
response erniebot.ChatCompletion.create(modelernie-bot, messagesmessages, #消息functionsfunctions, #匹配函数
)
执行上面的代码会返回 大模型会根据你的问题智能匹配是否符合函数的关键词我估计可能也会存在一定的误差整体测试还行匹配上后会返回以上信息get_user_info是你方法类的名称arguments里面就是你定义的参数它智能匹配到了用户名叫李大锤的。 接下来就可以根据返回的信息去调用本地对应的方法函数
#获取天气
def get_current_temperature(location,time,unit):#这里可以自定义执行方法下面是演示返回结果return {location:location,temperature: 36, time: time, unit: ℃}#获取用户信息
def get_user_info(username):#这里可以自定义执行方法下面是演示返回结果return {username: username, birthday: 1998-08-08, hobby: 踢球打游戏吃火锅}#如果匹配成功则执行下面代码
if response.is_function_response:function_call response.get_result()name2function {get_current_temperature: get_current_temperature,get_user_info: get_user_info}func name2function[function_call[name]]func_namefunction_call[name]args json.loads(function_call[arguments])res#根据name判断调用本地那个方法类if func_nameget_current_temperature:res func(locationargs[location],timeargs[time],unitargs[unit])elif func_nameget_user_info:res func(usernameargs[username])print(res:, res)
上面执行一下看看结果 到这里基本上都走通了开始的问题搜索用户李大锤的信息匹配后就执行了你的get_user_info的方法返回了结果。
通过以上思考这样的话是不是可以在自己的公司产品或者项目开发一个辅助工具更有效便捷的帮助用户摆脱一些繁琐复杂的操作流程这个想象空间我感觉很大。
得到json后我们可以再次通过模型美化一下
#再次通过Ai执行messages.append({role: assistant,content: None,function_call: function_call,})messages.append({role: function,name: function_call[name],content: json.dumps(res, ensure_asciiFalse),})secendresponse erniebot.ChatCompletion.create(modelernie-bot,messagesmessages,functionsfunctions,)print(secendresponse.result)
来执行看看 这功能还是挺强大的它的原理简单的可以理解为关键词匹配有点类似小爱小度智能控制的赶脚然后在加上模型本身的文案编写图片生成等功能真的可以让自己的产品得到一个飞一般的提升然后在想象一下把它结合到软件工具中是不是可以智能化的执行系统的命令智能回复及应答搜索等等我目前第一步就是先集成到公司的产品中去好了记录就先到这里。
如果有需要的源代码的同学请关注“小白一起学编程”公众号回复functioncalling 下载源码