ChatGpt API接口编程基础与使用

在研读完OpenAi官网文档的基础上,本文大部分内容是围绕编程方面,包括ChatGPT模型接口、图像生成接口、敏感数据拦截等,只有一小部分内容围绕如何通过temperature调参优化使用提示技巧。

一、OpenAi Api调用库
OpenAi开放了一系列模型接口API,(如果你对抖音Chat GPT,淘宝,京东,拼多多,1688平台API接口感兴趣,点&击&注册&免&测&试*)包括ChatGPT、图像生成、音频、文件、敏感数据拦截等。

若要集成这些模型接口调用到我们开发的系统里,可以通过多种编程语言的HTTP请求与openai API交互。目前OpenAi API支持多种编程语言调用,各类编程语言对应的接口调用库都能在OpenAi官网找到官方推荐的开源库。

我在本文里主要介绍Java、Go、Python、Node.js这四种,其余具体依赖方式和使用,感兴趣的童鞋可自行去官网进一步研究。

1.1、Java
官方推荐的是Theo Kanning开源的openai-java 。我用来集成到SpringBoot项目的依赖库,正好也是用了这款openai-java。

1.1.1、首先,需要在Maven引入以下依赖——


    com.theokanning.openai-gpt3-java
    service
    0.11.1

1.1.2、安装完成后,可以参考以下的代码案例,通过绑定密钥来调用chatGPT模型——

@GetMapping("/ai")
public void sendMsg() throws InterruptedException {
    System.out.println("开始提问题~");
    //GPT_TOKEN即你的代码密钥
    OpenAiService service = new OpenAiService(GPT_TOKEN,Duration.ofSeconds(10000));
    CompletionRequest completionRequest = CompletionRequest.builder()
         //使用的模型
            .model("text-davinci-003")
            //输入提示语
            .prompt("你是一个工作助手,请帮忙设计一份活动策划书")
            //该值越大每次返回的结果越随机,即相似度越小,可选参数,默认值为 1,取值 0-2
            .temperature(0.5)
            //返回结果最大分词数
            .maxTokens(2048)
            //与temperature类似
            .topP(1D)
            .build();
    service.createCompletion(completionRequest).getChoices().forEach(System.out::println);
    Thread.sleep(6000);
}

需要注意的是,若是部署在有"魔法代理"的Linux云服务商,代码需要相应做一下调整,否则是无法访问到ChatGPT的,只会出现以下异常提示:

java.net.ConnectException:Failed to connect to api.openai.com/2a03:2880:f10c:283:face:b00c:0:25de:443]
复制

当日我在这个问题上就踩了一个坑。

解决的办法很简单,只需要做以下调整——

public void send1Msg() throws InterruptedException {

System.out.println("开始提问题~");
        //需要额外设置一个能访问chatGPT的魔法访问代理

ObjectMapper mapper = defaultObjectMapper();
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8889));
        OkHttpClient client =  defaultClient(GPT_TOKEN,Duration.ofSeconds(10000))
                .newBuilder()
                .proxy(proxy)
                .build();
        Retrofit retrofit = defaultRetrofit(client, mapper);
        OpenAiApi api = retrofit.create(OpenAiApi.class);

    //将设置的代理传给OpenAiService即可
        OpenAiService service = new OpenAiService(api);
        CompletionRequest completionRequest = CompletionRequest.builder()
                .model("text-davinci-003")
                .prompt("你是一个工作助手,情帮忙设计一份活动策划书,设计一份活动策划书")
                .temperature(0.5)
                .maxTokens(2048)
                .topP(1D)
                .build();
        service.createCompletion(completionRequest).getChoices().forEach(System.out::println);
        Thread.sleep(6000);
}

1.2、Go
官方推荐的是sashabaranov开源的go-gpt3 。

1.2.1、需要先安装以下依赖包——

go get github.com/sashabaranov/go-openai

1.2.2、该开源项目提供的参考案例如下——

package main
import (
 "context"
 "fmt"
 openai "github.com/sashabaranov/go-openai"
)
func main() {
 client := openai.NewClient("your token")
 resp, err := client.CreateChatCompletion(
  context.Background(),
  openai.ChatCompletionRequest{
   Model: openai.GPT3Dot5Turbo,
   Messages: []openai.ChatCompletionMessage{
    {
     Role:    openai.ChatMessageRoleUser,
     Content: "Hello!",
    },
   },
  },
 )
 if err != nil {
  fmt.Printf("ChatCompletion error: %v\n", err)
  return
 }
 fmt.Println(resp.Choices[0].Message.Content)
}

1.3、Python
先下载Python版本的open库——

$ pip install openai

安装完成后,可以参考以下的代码案例,通过绑定密钥来调用chatGPT模型——

import os
import openai

# Load your API key from an environment variable or secret management service
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)

二、密钥认证
OpenAi API是需要使用API密钥进行认证访问。密钥获取方式,需要登录https://platform.openai.com/account/api-keys页面。

接着点击【Create new secret key】生成一个新的密钥,需要注意一点是,该密钥生成时就得保存下来,否则过后是无法再进行查看的,例如,我的密钥库里先前已有一条密钥,但现在无法再去确定这条密钥是什么了。


顺便提一点是,chatGPT是有免费额度的,调用API会消耗掉这些额度,我们可以在点击左边菜单【Usage】查看——


在调用OpenAi的API请求时,需要在HTTP请求报头中包含该API密钥,例如——

Authorization: Bearer OPENAI_API_KEY

三、GPT请求设置
官方提供了一个curl通过密钥调用API的请求案例,需要将案例里的$OPENAI_API_KEY替换为自己的API密钥,在开启了代理的服务器上运行,可以基于该案例测试服务器是否能正常调用到ChatGPT——

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "这

你可能感兴趣的:(chatgpt,人工智能)