上一篇文章11.4k star! 部署清华开源的ChatGLM3,用私有化大模型无缝替换openai,我们部署了ChatGLM3模型,其中的function call特性支持调用自定义代码实现定制化功能,由于大模型本身没有互联网的实时数据,今天我们用function call实现一个查询实时天气的功能,并简单分析一下其实现原理,openai的工具调用原理也一样。
cdopenai_api_demonohuppythonapi_server.py&
cdtools_using_demopythonopenai_api_demo.py
openai.UnprocessableEntityError:Errorcode:422-...'msg':'Inputshouldbeavaliddictionary'
出现这个错误可能是openai包的版本不正确,用以下命令指定安装1.8.0的openai,再重新运行:
pipinstallopenai==1.8.0pythonopenai_api_demo.py
实现一个查询系统,前端一个输入框,让用户用自然语言描写自己想查什么,服务端有根据城市查询天气、根据IP查询地理位置两个方法,服务端要根据用户的描述来确定应该调用哪个方法,传递什么参数,比如用户输入"我想查一下北京的天气",服务端就要调用getWeather("北京")。
以上就是function calling的实现原理,理论上如果没有这个特性,通过写prompt也可以实现。
4. 代码解析
FunctionCallResponse:{'arguments':'{"city_name":"北京"}','name':'get_weather'}根据方法名和参数就可以调用自己写的方法,获取到返回值
ToolCallResponse:{'current_condition':{'temp_C':'14','FeelsLikeC':'13','humidity':'38','weatherDesc':[{'value':'Clear'}],'observation_time':'02:00PM'}}因为方法的返回值不是自然语言,所以再将方法返回值发给大模型,让大模型总结一下,最后输出方便理解的自然语言。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |