ChatGPT API正式发布了, 高考一下先

2023-05-24 04:47:51 浏览数 (3)

2023年3月1日,也就是今天,OpenAI终于发布了ChatGPT API。这也意味着,手痒的小伙伴,有使用这个API的机会了。

我尝试了一下,用微软云Azure上的Python Azure Function, 调用了ChatGPT 的API。最终在本地运行成功: 可以在浏览器地址栏中输入各种问题,然后再显示ChatGPT的答案。

我在网址里输入了去年的一道物理高考题, 程序本身运行没问题。不过ChatGPT看来还需要加油,据说标准答案是C,而不是它认为的A。

ChatGPT API 的调用: 高考物理卷答题ChatGPT API 的调用: 高考物理卷答题

这个软件项目是个很简单的实验,只是为了看看ChatGPT的接口是否能调用成功。不过这个尝试也是接下来做其他实验的一个基础,所以总结一下,有兴趣的小伙伴可以往下看。技术细节在我的英文博客中有讲,学有余力的同学可以移步到那边:

https://medium.com/@datatec.studio/guide-invoke-openai-api-with-python-azure-functions-1c128974c49

以下主要有这几个部分:

  1. 介绍,含OpenAI更新的数据管理政策
  2. 开发步骤
  3. Python Azure Function: 调用ChatGPT API的核心代码 1. 介绍

Python Azure Function可以理解为一段跑在云上的程序,也就是所谓的无服务。它运行起来后就能提供一个网址,用户访问这个网址,就能得到相关的服务了。这次实验只需要修改两个文件,一个是Python代码,另一个是关于Python包的定义文件。剩下的都是配置安装。

在Python文件中, 我调用了ChatGPT API。也就是说,当用户在网址中输入问题后,这段程序能读取地址栏中编码后的问题,然后将问题传给ChatGPT API, 获得答案后,将答案再返回给了用户。

如果以后要把这个功能扩展,除了要将本地代码发布到云上外,还需在客户端设计一个输入框页面,用户就不需要在网址中输入问题,只需在输入框输入问题,点击按钮后把问题传到这个网址,这样更加人性化。或者使用别的软件,直接调用这个Python Azure Function提供的网址,或者说是Endpoint。例如整合在小程序,公众号等等,如果允许的话。或者通过一些附加的数据处理,拓展一些用户场景,也许更靠谱些。至于整个应用在性能,安全等方面的提升,那以后再聊了。

这次伴随ChatGPT API发布的,还有他们对数据管理的更新。感觉这个信息还很重要的,不知道这个条件是否已经满足在微信生态或其他国内应用上做开发呢。

OpenAI 官方信息 https://platform.openai.com/docs/guides/chat:

As of March 1st, 2023, we retain your API data for 30 days but no longer use your data sent via the API to improve our models. 

2. 开发步骤

  1. Create a python Azure Function from scratch
  2. Install OpenAI packages
  3. Generate an API-KEY of OpenAI API
  4. Use OpenAI API In Python Azure Function
  5. Start Azure Function locally
  6. Invoke OpenAI API from browser

3. Python Azure Function: 调用ChatGPT API的核心代码

项目的结构图如下, 其中function_app.py 以及 requirements.txt是之前提到的两个文件。

function_app.py 的代码如下。这段代码有兴趣的同学可以继续扩展,因为ChatGPT API支持同时接收多个message,代码中,你可以看到它是一个数组。

代码语言:javascript复制
import azure.functions as func
import openai

openai.api_key = "your-openai-api-key"
app = func.FunctionApp()

@app.function_name(name="HttpTrigger1")
@app.route(route="hello") 
def test_function(req: func.HttpRequest) -> func.HttpResponse:    

prompt = req.params.get('prompt')        

if not prompt:        
    return func.HttpResponse(    "Please provide a prompt.", status_code=400)            

completions = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",        
    messages=[{"role": "user", "content": prompt}]
)    

message = completions.choices[0].message.content.strip()  
  
return func.HttpResponse(message)

链接:

  1. Guide: ChatGPT API used in Python Azure Functions  https://medium.com/@datatec.studio/guide-invoke-openai-api-with-python-azure-functions-1c128974c49 
  2. 2022高考物理题: 2022年3月,中国航天员翟志刚、王亚平、叶光富在离地球表面约的“天宫二号”空间站上通过天地连线,为同学们上了一堂精彩的科学课。通过直播画面可以看到,在近地圆轨道上飞行的“天宫二号”中,航天员可以自由地漂浮,这表明他们(  )

A. 所受地球引力的大小近似为零

B. 所受地球引力与飞船对其作用力两者的合力近似为零

C. 所受地球引力的大小与其随飞船运动所需向心力的大小近似相等

D. 在地球表面上所受引力的大小小于其随飞船运动所需向心力的大小

0 人点赞