一个方便使用 Function calling 的小工具

319 天前
 lanlanye

出于自己的需要,为了更好地使用 OpenAI 的 Function calling 功能,做了一些微小的工作。

思路是读取函数的类型注解和文档,从中解析出函数注释、参数类型和描述,然后自动构建出能够用于 Function calling 的参数。

目前仅支持我用到的一些基本类型,发出来希望可以帮助到有同样需要的人,也希望能帮助我一起完善。

仓库: https://github.com/laipz8200/openai-agent

Function calling 文档: https://platform.openai.com/docs/guides/gpt/function-calling

1574 次点击
所在节点    Python
8 条回复
abersheeran
319 天前
哈哈哈,看到帖子已经想到了是用 pydantic 。看了一下,function 描述生成可以考虑调用 pydantic 的,然后手动去除一些多余的信息。因为 pydantic 生成的描述对枚举类型之类的复杂类型有更好的支持。
featureoverload
319 天前
@abersheeran 确实,fastapi 的 Route 类已经处理过了。pip install fastapi; restapi = route(restapi); json.loads(restapi.xxx.json_schema());
featureoverload
319 天前
@featureoverload (没写完给发送了)

差不多思路这样就可以:

pip install fastapi; restapi = route(restapi); json.loads(restapi.xxx.json_schema());
abersheeran
318 天前
@featureoverload 几行代码搞定的东西非要下载个更大的库,而且我记得 fastapi 没有对外保证这个 API 吧?内部接口教人拿来用,
lanlanye
317 天前
@abersheeran #1 我没找到 pydantic 有可以处理函数的方法,目前用的__doc__是 Python 自己的特性,pydantic 只用来定义数据结构了,求问 pydantic 的哪个特性可以用来生成描述?
abersheeran
317 天前
lanlanye
317 天前
@abersheeran #6 入参部分使用的话构造请求应该能更方便,但我的初衷是希望可以把现成的函数加上注释直接拿来用,如果强求用户这样定义入参或许不好,总之还是感谢。
abersheeran
317 天前
@lanlanye 就是加上类型标注直接生成了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951241

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX