OpenAI官方发布ChatGPT API接口gpt-3.5-turbo,python可直接调用

上期图文教程,我们介绍了ChatGPT的注册使用过程,并且介绍了GPT-3代API接口的开发代码实现过程,由于ChatGPT一直使用的是ChatGPT-3.5代接口,且我们在官网上面使用的也是ChatGPT-3.5代接口,大家对3.5代接口都十分认同,上期介绍的ChatGPT-3代API虽然可以实现问答对话,但是大家希望是否可以使用官方的接口来实现强大的ChatGPT功能。关于如何注册,如何获取API key,上期图文我们也进行了详细的分享。

本期,我们介绍一下openai刚刚公布的ChatGPT的API接口gpt-3.5-turbo。首先其gpt-3.5-turbo接口API是官方刚刚发布的gpt-3.5-turbo API接口,针对第三代接口进行了速度与精度方面的优化,其官方也是建议开发者使用gpt-3.5-turbo API接口,且价格是3代API 接口的十分之一的价格。我们首先介绍一下openai发布的gpt-3.5-turbo API如何使用requests库进行调用。

import requests
# Your OpenAI API Key
api_key = "YOUR KEYS"
# The text prompt you want to generate a response 
input_prompt = input("输入需要跟chat AI的聊天内容:")
prompt = input_prompt
# The URL for OpenAI's API
url = "https://api.openai.com/v1/chat/completions"
# The headers for the API request
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}
data = {
"model":"gpt-3.5-turbo",
"messages":[{"role":"user","content":prompt}],
"max_tokens":800,
"temperature":0.5,
"frequency_penalty":0,
"presence_penalty":0}
# Make the API request
response = requests.post(url, headers=headers, json=data)
# Check if the request was successful
if response.status_code == 200:
    # Extract the generated text from the response
    generated_text = response.json()['choices'][0]['message']['content']
    print(generated_text)
else:
    # Handle the error
    print(f"Request failed with status code 额{response.status_code}")

首先,跟往期教程类似,我们需要使用requests库,并需要官方账号的api key。然后就可以输入需要的问题了。当然gpt-3.5-turbo的API接口地址如下:

url = "https://api.openai.com/v1/chat/completions"

我们可以使用往期的代码,把需要的问题post到上面的API接口接口。这里需要注意的是gpt-3.5-turbo的API接口使用的不再是prompt,而是messages参数,且参数格式如下:

 messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]

在messages参数里面,我们需要指定role角色与content我们的问题,然后其他参数跟3代API接口一致。

{
 'id': 'chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve',
 'object': 'chat.completion',
 'created': 1677649420,
 'model': 'gpt-3.5-turbo',
 'usage': {'prompt_tokens': 56, 'completion_tokens': 31, 'total_tokens': 87},
 'choices': [
   {
    'message': {
      'role': 'assistant',
      'content': 'The 2020 World Series was played in Arlington, Texas at the Globe Life Field, which was the new home stadium for the Texas Rangers.'},
    'finish_reason': 'stop',
    'index': 0
   }
  ]
}

当然,最后的返回参数也有稍微的区别,我们需要使用如下代码获取返回的参数。

response.json()['choices'][0]['message']['content']

当然,除了以上直接调用API接口外,openAI也开发了自己的第三方库

import openai
openai.api_key = 'sk-keys'
while True:
  prompt = input('Q:')
  if prompt == 'quit':
    break
  else:
    res = openai.ChatCompletion.create(
        model = 'gpt-3.5-turbo',
        messages= [{"role":"user","content":prompt}],
        temperature = 0.5,
        max_tokens = 500,
        frequency_penalty=0,
        presence_penalty=0
    )
    print('***********GPT-3.5 Open AI**************')
    print(res['choices'][0]['message']['content'])

首先需要我们安装openai 的第三方库,这里最好自己的python版本大于3.9,安装完成后,我们便可以使用openai库进行chatGPT的调用工作了。

第二行代码,我们需要提供上一个步骤的api key

然后,我们直接使用
openai.ChatCompletion.create函数就可以调用chatGPT了。

同样的道理,我们需要修改一下里面的参数,一个是model参数,另外一个是messages参数。

        model = 'gpt-3.5-turbo',
        messages= [{"role":"user","content":prompt}],

以上,便是我们介绍的ChatGPT 官方API接口gpt-3.5-turbo,当然openAI除了ChatGPT这样的NLP领域任务外,还有类似DALL-E的AI绘画模型,且官方开源的whisper,可以识别99种语音的识别系统,不仅可以语音转文字,还可以自动翻译等。

举报
评论 0

    今日头条推荐引擎有 9 条更新

    总台记者专访丨巴西总统卢拉:希望进一步加强巴西与中国的关系
    正大量上市!初夏很多人爱吃,有人连吃5天进了医院,膝盖肿得无法弯曲
    5月19日体彩中奖号码
    从“借船出海”到“造船远航” 中国车企为何要造自己的船?
    别吃,一口下去6000条寄生虫!多地正大量出现,严重可致死
    15小时前

    为何说中国得防着巴基斯坦?说句扎心的,巴基斯坦可能比越南还危险,他们接受西化教育的精英比比皆是,一旦取得政权后美国抛出诱饵,就可能倒向西方,菲律宾就是最好的例子……   先从现实讲,巴基斯坦确实是中国在南亚最紧密的伙伴之一。中巴经济走廊、高铁、高速公路、港口(比如瓜达尔港)都是中国一手投资建设的,投入巨大,战略意义也非同一般。在印度洋布局上,巴基斯坦几乎是中国最重要的“出海口”。   可问题也来了:你对别人掏心掏肺,对方真就不会动摇吗?要知道,国家之间没有“永恒的朋友”,只有“永恒的利益”。   为什么说巴基斯坦可能比越南还危险?   表面上看,越南这几年跟美国、日本走得近,对中国也经常发出强硬言论。但越南骨子里防美国也防得厉害,他们经历过战争,知道“吃美式亏”是啥滋味。再加上他们的政治体制和国家意识形态,跟西方格格不入,是真心走不了太远。   但巴基斯坦不一样。   第一,西化精英太多。无论是军队高层、政坛精英,还是媒体领袖,很多都是英国、美国留学回来的人,他们从小接受的就是西式教育,思想观念、价值判断、甚至审美情趣,跟西方同频共振。你给他讲“命运共同体”“亚洲世纪”,他听着点头,心里想的是“我孩子能不能去美国读哈佛”。   第二,政治不稳、军政两头跑。巴基斯坦长期是军人掌权,军方是“真正的大老板”,而文官政府更像“看门人”。这种政局结构最大的问题是——不稳定。一旦文官上台,又有西方靠山,路线就可能骤变。而且美方一直没放弃对巴渗透,情报、资金、舆论三管齐下,养人、策反、影响舆情,手段丰富得很。   第三,经济依赖和债务压力是软肋。近年来巴基斯坦经济状况非常吃紧,通胀高、外汇紧张、偿债压力大。这个时候谁给钱谁就是“爹”。美国、IMF、世界银行如果抛出一根“救命稻草”,在经济极度脆弱的背景下,哪怕是铁哥们也可能心动。菲律宾不就是例子?以前是美国的“小弟”,后来跟中国走近一点,结果美国一出手,翻脸比翻书还快。   再说瓜达尔港,这是中国“一带一路”的“心脏地带”。可这个港口一旦出问题,不仅投资打水漂,更是战略风险。如今,这里已经出现过反对中国投资的暴力袭击事件,背后有没有外部势力推动?很难说没有。   而更深层的问题是——巴基斯坦政府对一些“反中”势力是否真有掌控力?一旦局势混乱,巴铁能否站在中国一边,不跟风倒向美国?没人能打包票。   其实,中国政府早就意识到这个问题。比如在“一带一路”中,逐步推进“风险共担、利益共享”机制,派出企业自己负责安保系统、直接与军方沟通,而不完全依赖地方政府。同时,强化与伊朗、沙特等中东国家的合作,也是在为可能的变局预做准备。   换句话说,中国在走一条多元布局、分散风险的战略路径,不把所有鸡蛋放在一个“巴铁篮子”里。   所以说,中国对巴基斯坦确实有感情、有历史,但不能抱幻想。铁哥们再铁,也得盯着他们的利益走向。今天是兄弟,明天一换总统就不一定了;你真投了几千亿,他们可能还拿这当筹码去跟美国讨价还价。   想一想当年的利比亚、伊拉克,那些“美好关系”在大国博弈面前不堪一击。中国不缺朋友,缺的是清醒。对巴基斯坦,要合作,更要观察;要投入,更要设“止损点”。   总结一句话:兄弟可以交,防人之心不可无。情谊可以说,底线和利益更得守。