https://openai.com/
可以通过官方提供的pythonSDK与openai API进行交互,或者使用社区维护的第三方库,如:sashabaranov/go-openai,发送http请求调用openai API.
官方python sdk:
社区go三方库(目前star 5.9k)
这段话都可以看懂,就不翻译了
The OpenAI API uses API keys for authentication. Visit your API Keys page to retrieve the API key you’ll use in your requests.
Remember that your API key is a secret! Do not share it with others or expose it in any client-side code (browsers, apps). Production requests must be routed through your own backend server where your API key can be securely loaded from an environment variable or key management service.
All API requests should include your API key in an Authorization HTTP header as follows:
申请API KEY
请求组织(Requesting organization)
For users who belong to multiple organizations, you can pass a header to specify which organization is used for an API request. Usage from these API requests will count against the specified organization’s subscription quota.
(对于属于多个组织的用户,您可以传递标头来指定 API 请求使用哪个组织。 这些 API 请求的使用量将计入指定组织的订阅配额。)
Example with the openai Python package:
复制粘贴官网的实例:
但是,OpenAI已经于2021年11月1日停止了免费试用计划,使用OpenAI的Chat API(包括ChatGPT)进行开发者调用是需要付费的。所以,直接请求上述接口会报错:
另外,字典中每一个role的取值,对应的功能都不太一样,其中system用于在会话开始之初给定chatGPT一个指示或声明,使得后续的回答更具有个性化和专业化。user是用于给用户提问的或者说是用来给用户输入prompt的。assistant是用于输入chatGPT的回答内容。
当使用OpenAI的对话模型时,以下是系统、用户和助手角色在一个假设的旅行规划对话中的具体示例:
-
系统(System)角色的例子:
系统:欢迎来到旅行规划助手!你想要去哪个目的地旅行?
这里系统角色起始了对话,并提供了引导性的问题,以引导用户进入对话主题。 -
用户(User)角色的例子:
用户:我计划去巴黎度假,我想了解一些旅游景点和当地美食。
用户提供了自己的旅行目的地和需求,指导对话的方向。 -
助手(Assistant)角色的例子:
助手:巴黎是个美丽的城市,有很多令人惊叹的景点和美食。你可以游览埃菲尔铁塔、卢浮宫和巴黎圣母院等著名景点。当谈到美食,巴黎的法国菜和甜点非常有名,你可以尝试法式奶酪、可颂面包和马卡龙。
助手作为对话模型,理解用户的需求并提供相关信息,包括巴黎的景点和美食推荐。
在这个例子中,系统角色起始了对话,用户角色提供了自己的需求和信息,而助手角色根据用户的输入生成了有关巴黎旅行的回复。通过这样的交互,系统、用户和助手共同参与对话,实现了一个旅行规划的对话场景。
下面给出简单实现上下文的python代码来帮助理解:(可以看出,保持上下文是需要利用role来将问答重复传入的)
关于chat tokens
总而言之,key=user用于提问;key=system用于设置环境或主体;key=assistant用于把之前gpt的回答写入,这样对话就有了上下文。
因此,在保持上下文的情况下问答会消耗非常多的
官方这次的收费标准是 $0.002/1K tokens,大概 750 词。虽然1k个token看起来很多。但其实,发送一段供API响应的文本可能就会花费不少token。
基本问1个问题就要耗费100~200个token,算起来其实不少的,尤其在连续会话中,为了保持对话的连续性,必须每次都要回传历史消息,并且输入都要算 token 数算钱的,满打满算,按量付费其实也不便宜。
按照一般的经验来看,在英语中“一个 token 通常对应大约 4 个字符”,而1个汉字大致是2~2.5个token。
举一个官方的说明例子可能更直观一些:根据 OpenAI 官方文档,“ChatGPT is great!”这组单词就需要六个 token—— 它的 API 将其分解为“Chat”、“G”、“PT”、“is”、“great”和“!”。
关于国内支付
付费购买openai api的调用额度需要国外银行卡,如果有国外的同学,同事,亲戚家人等最好不过了,没有则可以使用(depay和onekey等)支付。
以下是我找到的一些教程:
- 国内Onekey Card快速开通ChatGPT Plus教程【亲测有效】:https://juejin.cn/post/7223343320298324029
- Depay虚拟卡绑定支付宝、美团、微信的使用场景和建议:https://juejin.cn/post/7208498140159410236
- 国内开通Chat GPT Plus保姆级教程【典藏】:https://www.chatgpt-plus.site/chatgpt-plus/
Given a list of messages comprising a conversation, the model will return a response.
此处只给出view部分和consts部分的代码,
views.go
consts.go