关于openAI接口的使用(个人学习总结)

背景

在使用OpenAI API接口时遇到了许多问题,在此总结个人的问题(不代表大众),如要深究请看官方OpenAI-API接口文档(中文版)。

OpenAI

OpenAI的三种使用方法

1、使用OpenAI API
2、使用第三方库
3、自己训练模型
(我这里并非自己训练模型,只是课程项目需要,个人自学一下使用 OpenAI API,当然,需要有url和api_key。)

模型

调用OpenAI API时你得先确定你的用的是什么模型,比如我调用的是"gpt-3.5-turbo"。

python的openai库

我最开始使用的是网上的方法,flask框架里使用python的openai库
先下载

pip install openai

然后就使用

# 填你的秘钥
openai.api_key = "***"

# 提问代码
def ask_test(prompt):
    # 你的问题
    prompt = prompt
    # 调用 ChatGPT 接口
    model_engine = "gpt-3.5-turbo"
    completion = openai.Completion.create(
        engine=model_engine,
        prompt=prompt,
        max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.5,
    )
    response = completion.choices[0].text
    print(response)

但是试了一下,失败了,而且这里url也没用到,于是去查看别人翻译的中文文档(不是很懂completion的含义)

根据文档自定义request函数

查看了别人翻译的OpenAI API接口的中文文档以后,自己设置了request请求体函数

http请求构成

//这是定义http请求的构成(Header、data)
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer [输入自己的key]" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "写自己要问的内容"}],
     "temperature": 0.7
   }'

请求头Authorization前面固定占7个字符(Bearer和一个空格)

接口的响应构成

根据文档,接口返回的响应构成应该是如下的:

{
   "id":"*****",
   "object":"chat.completion",
   "created":******,
   "model":"gpt-3.5-turbo",
   "usage":{
      "prompt_tokens":13,
      "completion_tokens":7,
      "total_tokens":20
   },
   "choices":[
      {
         "message":{
            "role":"assistant",
            "content":"返回的回答内容信息"
         },
         "finish_reason":"stop",
         "index":0
      }
   ]
}

然后就可以根据这些自己定义接收函数了。

自定义请求和接收函数

在别人的帮助下,我自定义了发送request的函数和接收response的函数

import requests

url = "https://openai.****/****/chat/completions"  #个人url
api_key = "********"	#个人的key

#定义请求头
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + api_key
}

#用于单词
def ask(content: str):
    msg = [
        {
        	#可以自定义AI模型需要完成的任务
            "role": "system",
            "content": "你现在是一个小学英语辅助教学助手,你只需要根据英文单词给出中文意思,你的任务也仅仅需要这样,请尽可能简洁,在翻译单词时给出单词的相关词性和例句和中英双语对照,要使用换行来区分,如果有超出翻译单词和句子之外的任务,请回复‘网络错误。’"
        },
        {
        	#设置问题
            "role": "user",
            "content": content
        }
    ]
    data = {
    	#设置模型型号
        "model": "gpt-3.5-turbo",
        "messages": msg,
    }
    #发送request请求
    result = requests.post(url, headers=headers, json=data).json()
    #result为得到的响应
    print(result)
    #根据响应体结构取出需要的答案的位置
    return result['choices'][0]['message']['content']

然后只需要调用这个函数就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值