OpenAi开放了一系列模型接口API,包括ChatGPT、图像生成、音频、文件、敏感数据拦截等。
若要集成这些模型接口调用到我们开发的系统里,可以通过多种编程语言的HTTP请求与openai API交互。目前OpenAi API支持多种编程语言调用,各类编程语言对应的接口调用库都能在OpenAi官网找到官方推荐的开源库。
我在本文里主要介绍Java、Go、Python、Node.js这四种,其余具体依赖方式和使用,感兴趣的童鞋可自行去官网进一步研究。
官方推荐的是Theo Kanning开源的openai-java 。我用来集成到SpringBoot项目的依赖库,正好也是用了这款openai-java。
1.1.1、首先,需要在Maven引入以下依赖——
1.1.2、安装完成后,可以参考以下的代码案例,通过绑定密钥来调用chatGPT模型——
需要注意的是,若是部署在有”魔法代理”的Linux云服务商,代码需要相应做一下调整,否则是无法访问到ChatGPT的,只会出现以下异常提示:
当日我在这个问题上就踩了一个坑。
解决的办法很简单,只需要做以下调整——
官方推荐的是sashabaranov开源的go-gpt3 。
1.2.1、需要先安装以下依赖包——
1.2.2、该开源项目提供的参考案例如下——
先下载Python版本的open库——
安装完成后,可以参考以下的代码案例,通过绑定密钥来调用chatGPT模型——
先下载Node版本的openai库——
安装完成后,可以参考以下的代码案例,通过绑定密钥来调用chatGPT模型——
OpenAi API是需要使用API密钥进行认证访问。密钥获取方式,需要登录https://platform.openai.com/account/api-keys页面。
官方提供了一个curl通过密钥调用API的请求案例,需要将案例里的$OPENAI_API_KEY替换为自己的API密钥,在开启了代理的服务器上运行,可以基于该案例测试服务器是否能正常调用到ChatGPT——
其实OpenAi有针对这块内容审核提供了开放的API接口,可以免费使用。
若想在聊天API的输出中添加一个敏捷信息拦截层,就可以在输入/输出信息时,调用该接口。例如,存在这样一份API接口调用案例——
响应返回内容如下——
- flagged:如果模型将内容属于违反OpenAI的使用策略,则设置为true,否则为false。
- categories:包含每个类别二进制使用策略违反标志的字典。对于每个字段值,如果模型将相应类别标记为违规则该值为true,否则为false。
- category_scores:包含模型输出的每个类别原始分数的字典,表示模型是否相信输入了违反OpenAI对类别的策略。该值介于0和1之间,其中值越大表示置信度越高。注意一点是,分数不应被解释为概率。
除了使用OpenAi提供的输入/输出信息审核接口,还可以开发敏感词过滤系统,将传给ChatGPT以及响应返回的数据,进行敏感词过滤。
OpenAi提供了多种模型,可以通过执行以下查询指令,查询出API支持的模型类型——
出现出来的结果如下,应该有数十个模型,我用的最多是gpt-3.5-turbo,这是目前比较标准的型号版本——
可以基于以上模型类表接口,查询出具体模型实例的详情,包括模型的基本信息、所有者及权限等——
查询出gpt-3.5-turbo的模型详情如下——
GPT-3.5模型可以理解和生成自然语言或代码,在GPT-3.5版本当中,最有能力和最具成本收益的模型是GPT-3.5-turbo,它是基于原有的3.5版本模型进行的迭代优化,可以更好地完成传统任务。目前最新模型是GPT-4,具有更先进的常识和推理能力,但还没有开放免费API接口。
给定一个提示和/或一个输入图像,模型会生成一个新的图像,例如,我想让它画一只胖猫——
然后,它确实给我画了两张图——
打一个比喻,ChatGPT中的温度值就演员演戏——
较低的温度值可以看作是“按照剧本表演”,演员是什么水平,就演出什么样子。温度值低生成的文本比较保守和确定,适合需要准确性和连贯性的任务,比如内容摘要、机器翻译等。
较高的温度值可以看成“即兴表演”,生成的文本可能更加随机和多样性,当然,也可能更加糟糕,这种情况比较适合用来创作和探索性任务,比如生成对话、创意写作等。
当然,这个temperature参数并非万能的,在某些文本内容当中,可能几乎感受不到太多差别。
若温度值设置为0,那么,模型将总会返回相同或非常相似的内容,当温度高于0时,每次提交相同的提示会导致生成不同内容。官方表示,温度值在0~1之间,基本上可以控制模型生成比较满意的答案。
例如,当用户询问“如何形容一只胖猫?”时,聊天机器人可能会生成以下不同的回答:
- 温度值为0.5时:“这是一只肥嘟嘟的猫。”
- 温度值为1.0时:“这只猫非常胖,它的身体肥厚且圆润,看上去就像一个小球一样。它的肚子很大,当它走路时会晃来晃去,脸上也有一圈又圆又滑的脂肪。总之,这是一只非常非常胖的猫。”
- 温度值为1.5时:“这只猫的身材简直像是一个小沙发,它的腹部肥厚得几乎抬不起来,四肢也变得特别短。当它走路时,身体会晃动,好像随时都可能翻倒。它的脸宽大而且圆润,双颊上还有一圈厚厚的赘肉,看上去相当可爱。总之,这是一只极其肥胖的猫。”