准备工作

        ChatGPT账号(openai)

        集成好网络框架(默认使用Retrofit)

接入

        选择modele

Android ChatCPT集成-LMLPHP

        这里使用的是 「https://api.openai.com/v1/chat/completions」

        创建API Keys

Android ChatCPT集成-LMLPHP

运行效果

POST https://api.openai.com/v1/chat/completions
Content-Type: application/json
Content-Length: 79
Authorization: Bearer 你的API Keys(sk-xxxxxEUbR)
Body:{"messages":[{"content":"Who are you?","role":"user"}],"model":"gpt-3.5-turbo"}

返回
<-- 200 https://api.openai.com/v1/chat/completions (2576ms)
date: Mon, 04 Sep 2023 07:17:50 GMT
content-type: application/json
access-control-allow-origin: *
cache-control: no-cache, must-revalidate
openai-model: gpt-3.5-turbo-0613
openai-organization: user-pnritcadmm5y4rt9a1ebccdh
openai-processing-ms: 1357
openai-version: 2020-10-01
strict-transport-security: max-age=15724800; includeSubDomains
x-ratelimit-limit-requests: 200
x-ratelimit-limit-tokens: 40000
x-ratelimit-remaining-requests: 195
x-ratelimit-remaining-tokens: 39980
x-ratelimit-reset-requests: 31m9.648s
x-ratelimit-reset-tokens: 30ms
x-request-id: c87017722536f2676384cdfd02af455c
cf-cache-status: DYNAMIC
server: cloudflare
cf-ray: 801474734dba599d-IAD
alt-svc: h3=":443"; ma=86400

{
    "id": "chatcmpl-7uy8Cml8r1GYP0DQkJB3KrzNo0vQl",
    "object": "chat.completion",
    "created": 1693811868,
    "model": "gpt-3.5-turbo-0613",
    "choices": [{
        "index": 0,
        "message": {
            "role": "assistant",
            "content": "I am an AI language model created by OpenAI called GPT-3. I am here to assist and provide information to the best of my abilities."
        },
        "finish_reason": "stop"
    }],
    "usage": {
        "prompt_tokens": 11,
        "completion_tokens": 31,
        "total_tokens": 42
    }
}

实现

2.1调用

        ArrayList<ChatGPTUPBodyBean.MessageBean> list = new ArrayList<>();
        list.add(new ChatGPTUPBodyBean.MessageBean("user","Who are you?"));
        ChatGPTUPBodyBean bodyBean = new ChatGPTUPBodyBean(list,"gpt-3.5-turbo") ;
        Map<String, String> headerMap = new HashMap<>();
        headerMap.put("Content-Type", "application/json");
        headerMap.put("Authorization", "Bearer 你的API Keys");
        ChatGPTRetrofitManager.getInstance().create(IChatGPTService.class).completions(bodyBean,headerMap)
                .subscribeOn(Schedulers.io())//切换到IO线程
                .observeOn(AndroidSchedulers.mainThread())//切换到主线程
                // 添加订阅
                .subscribe(responseData -> {
                }, throwable -> {
                    ToastUtil.showMessage(R.string.str_network_exception);
                });

2.2 IChatGPTService

  • 1.以Body的形式传递数据

  • 2.设置请求头

public interface IChatGPTService {
    @POST("v1/chat/completions")
    Observable<ChatGPTBean> completions(@Body ChatGPTUPBodyBean bodyBean, @HeaderMap Map<String,String> headerMap);
}

2.3 上行参数(ChatGPTUPBodyBean)

public class ChatGPTUPBodyBean {

    public List<MessageBean> messages;
    public String model;

    public static class MessageBean {
        /**
         * role : user
         * content : Who are you?
         */

        public String role;
        public String content;

        public MessageBean(String role, String content) {
            this.role = role;
            this.content = content;
        }
    }

    public ChatGPTUPBodyBean(List<MessageBean> messages, String model) {
        this.messages = messages;
        this.model = model;
    }
}

2.4 返回实体

        按照上面返回的JSON生成即可,提取choices.message.content即可。

        这只是个简单的Demo,接入起来十分简单。但是具体商用还是要结合自己的业务场景来做,这个仅供参考

09-05 09:52