ChatGpt接入流程

乐云一
  • 笔记
  • note
About 1669 wordsAbout 6 min

ChatGpt接入流程

本文档记录从注册到使用ChatGpt的流程,以及踩到的坑;

注册ChatGpt

需要准备:国外手机号魔法

其中魔法是必须的,除非chatGpt进入国内市场,或者咱们放开互联网围墙╮(╯▽╰)╭。

当然国内有大量的二次包装可略过官网使用的封装,可以直接通过他反的注册系统,填写gpt的api-key去使用

没有国外手机号

有两种办法,一是通过各种形式找个境外友人,二是使用企业代理虚拟号码;

使用第二种,需要15RMB的成本;

SMS-active

https://sms-activate.org/cnopen in new window

官方很友好,右上角可选择中文,登录可随意账号,Google目前支持境内邮箱及手机号

在右侧选择openai服务,在购买对应国家虚拟手机号之前,先完成充值,充值按钮在右上角登录人像旁;

选择支付宝充值,最低为2美元,差不多15RMB

之后购买对应国家的虚拟手机号,会根据国家热门度以及手机存量价格进行偏移;

这里踩了第一个坑,尽量选择魔法所在地的梯子

image-20240220230054170

然后就购买到了一个手机号,在OpenAI里需要用到手机号验证的地方可以直接使用;

如果是使用Goole或是微软、苹果账号登录的,则需要创建其境外的账号;

这里可以大胆的尝试,因为 SMS-active 在手机没有被激活过,无论发生什么都可以随时退款,时间到了20分钟会自动退款;

然后需要注意,如果注册账号的过程中,比如Goole账号

出现 此电话号码已用过太多次 ,只需要在 SMS-active 的号码列表中点击最右边的置换按钮,换一个号码就可以了;

ps:

1、 此电话号码无法用于进行验证。 魔法的IP被标记为不安全,选择无痕模式+切换ip。

2、 sms-active 无法收到短信,大体上四个原因:

  • SMS-activateopen in new window提供了多个虚拟手机号供用户使用,但如果某个号码被多人同时使用,可能会导致短信无法送达。在这种情况下,你可以尝试切换不同的虚拟手机号,或者选择更少使用的时间段,以提高收到短信的几率。
  • 有时候,短信在传送过程中可能会受到网络延迟或不稳定的影响,导致无法及时到达你的手机。这种情况下,你可以尝试切换到一个更稳定的网络连接,例如切换到Wi-Fi或更稳定的移动数据网络。
  • 平台问题
  • 还有一种可能,没有选对对应的服务,比方说openai选了Goole的

以上为官方的解释

页面使用

页面目前可免费使用3.5模型的,不过因为没有角色扮演、面具等调教好的gpt特性,所以这很 "人工智能"

每个账号默认有$5

登录后台

通过上述境外手机号,直接跳到gpt后台,选择 API keys

进行手机验证,创建一个api keys,用于后续代码接入调用;

搭建自己的GptDemo

官方文档:https://platform.openai.com/docs/quickstart/build-your-applicationopen in new window

由于官方写的过于详细,且搭建过程过于傻瓜;

按照教程,下载zip,搭建env文件和Python/Node.js,并配置好上面验证后创建的API Key;

运行后,就是一个普通的页面,使用感官也好官方的页面一样,很不实用;

因此我极力推荐使用 [ChatGPT-Next-Webopen in new window](https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web)

代码使用

支持非常多的语音接入,并且因为GPt的火爆,社区上有各种各样的开源SDK提供接入入口;

官方文档:https://platform.openai.com/docs/libraries/community-librariesopen in new window

仅以JAVA为例,https://github.com/TheoKanning/openai-javaopen in new window

        <dependency>
            <groupId>com.theokanning.openai-gpt3-java</groupId>
            <artifactId>api</artifactId>
            <version>0.11.0</version>
        </dependency>
        <dependency>
            <groupId>com.theokanning.openai-gpt3-java</groupId>
            <artifactId>client</artifactId>
            <version>0.11.0</version>
        </dependency>
        <dependency>
            <groupId>com.theokanning.openai-gpt3-java</groupId>
            <artifactId>service</artifactId>
            <version>0.11.0</version>
        </dependency>

使用起来非常简单,和一般的HTTP服务调度一致:

  1. 创建服务 OpenAiService service = new OpenAiService(token);
  2. 通过service.create.....发起请求
  3. 拆解请求结果

这里只举一个非常常用的例子,上下文聊天模式:

    public void chat(boolean startStatus,String newChat,Integer index) {
        UserData user = TokenUtils.getUser();
        Map<String, List<ChatMessage>> chatCache = ChatDialogueConstants.chatList;
        String key = user.getUserBaseInfo().getSessionId()+"#"+index;
        List<ChatMessage> chatList = null;
        if(startStatus) {
            chatList = new ArrayList<>();
            chatCache.put(key,chatList);
        }else{
            ChatDialogueConstants.chatList.remove(key);
        }
        ChatMessage newMessage=new ChatMessage();
        newMessage.setContent(newChat);
        chatList.add(newMessage);
        String result = aiChatting(chatList);
    }

    private String aiChatting(List<ChatMessage> chatList) {
        ChatCompletionRequest chatCompletionRequest= ChatCompletionRequest.builder()
                .model(ChatDialogueConstants.CHAT_MODEL)
                .messages(chatList)
                .build();
        ChatCompletionResult result=chatGPTTokenManager.getOpenApi().createChatCompletion(chatCompletionRequest);

        return result.getChoices().get(0).getMessage().getContent();
    }

    /**
     * 聊天框列表
     */
    public static Map<String, List<ChatMessage>> chatList = new ConcurrentHashMap<>();

    public static String CHAT_MODEL = "";

还有一个生成图片的

    /**
     * 生成描述图片
     * @param imageChat
     */
    public void chatImage(String imageChat) {
        CreateImageRequest createImageRequest= CreateImageRequest.builder()
                //所需图像的文本描述。最大长度为 1000 个字符。
                .prompt(imageChat)
                //生成图像的大小。必须是256x256、512x512或1024x1024
                .size("1024x1024")
                //响应格式,生成的图像返回的格式。必须是url或b64_json,默认为url,url将在一小时后过期。
                .responseFormat("url")
                //要生成的图像数。必须介于 1 和 10 之间。
                .n(1)
                .build();
        ImageResult result=chatGPTTokenManager.getOpenApi().createImage(createImageRequest);
        Map<String,String> r=new HashMap<>();
        String url=result.getData().get(0).getUrl();
    }

差不多一个功能齐全的gpt可以围绕着这两个展开,剩下的是角色的设置,面具的选择等管理问题

不过因为gpt的爆火,其实Git上可以很容易找到一个比较完善的项目直接使用,重点还是在与如何去使用GPt

Last update:
Contributors: LeYunone
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.14.7