在国内如何使用某知名GPT,附在线体验链接

在线体验

在这里插入图片描述

三种方式:
一、访问openai,之前需要国外手机号,现在好像不用验证了,但是调用API还是需要验证手机号
二、购买一个海外服务器,然后自行在海外服务器上部署一套调用OpenAI接口的服务
三、通过一些国内封装好的网站访问,一般收取昂贵会员费

笔者采用的是方案二的改良版,在海外服务器上部署一套桥接服务,然后通过国内服务器进行调用
下面是部分代码:

public void streamCompletions(HttpServletResponse response, List<OpenAIResponsiveAPI.Message> messages, Float temperature) {
        OpenAiStreamApi.completionsStream(messages, temperature).blockingForEach(chunk -> {
            if (response.containsHeader("Content-Type")) {
                response.setHeader("Content-Type", "text/event-stream");
            } else {
                response.setHeader("Content-Type", "text/event-stream");
                response.setHeader("Cache-Control", "no-cache");
                response.setHeader("Connection", "keep-alive");
            }
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write("data: " + chunk);
            response.getWriter().flush();
            try {
                Thread.sleep(10);
            } catch (Exception ex) {
            }
        });
}

public abstract class StreamApiUtil {

    protected static final ObjectMapper mapper = defaultObjectMapper();

    public static ObjectMapper defaultObjectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
        return mapper;
    }

    public static <T> Flowable<T> stream(Call<ResponseBody> apiCall, Class<T> cl) {
        return stream(apiCall).map(sse -> {
            T t = mapper.readValue(sse.getData(), cl);
            return t;
        });
    }

    public static Flowable<SSE> stream(Call<ResponseBody> apiCall) {
        return stream(apiCall, false);
    }

    public static Flowable<SSE> stream(Call<ResponseBody> apiCall, boolean emitDone) {
        return Flowable.create(emitter -> apiCall.enqueue(new ResponseBodyCallback(emitter, emitDone)), BackpressureStrategy.BUFFER);
    }

}

public class OpenAiUtil extends StreamApiUtil {
    public static Flowable<OpenAiResult> completionsStream(List<Message> messages, float temperature) {
        Map<String, Object> params = new HashMap<>();
        params.put("messages", messages);
        params.put("temperature", temperature);
        return stream(OPEN_AI_API.createCompletionStream(params), OpenAiResult.class);
    }
}

public interface OpenAiApi {

    @Streaming
    @POST("/api/chat-ai/completionsStream")
    Call<ResponseBody> createCompletionStream(@Body Map request);

}

点击在线体验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/261610.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis基本操作

目录 准备工作 删除操作 预编译SQL 增加操作 获取返回的主键 更新操作 准备工作 准备数据库表 emp创建一个新的springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动、lombok&#xff09;application.properties中引入数据库连接信息创建对应…

MDC Manifest Configurator

基于华为手册总结摘要的&#xff0c;有分布手册没写的&#xff0c;我给补充上了&#xff0c;比如&#xff1a;定义启动设定 CM配置流程&#xff1a;配置流程涵盖定义数据类型、服务接口、子网信息、部署通信、部署通信协议、定义可执行程序和进程、定义应用进程信息、创建服务…

c语言错误总结

函数 A:void类型函数可以 B&#xff1a;不需要&#xff0c;如果return 不返回任何值&#xff0c;函数会在return语句执行后终止执行&#xff0c;后面的语句不会执行 C&#xff1a;对的 D&#xff1a;不可能&#xff0c;return只能返回一个数据 A:函数不一定有返回值 B:可以…

JS - 设计模式持续学习中

通过例子持续学习JS设计模式中&#xff0c;接下来请跟随我的步伐走进我的学习笔记世界~ 什么是设计模式&#xff1f;我们为什么需要学习设计模式&#xff1f; 设计模式是可以更好解决问题的一种方案。 这意味着什么&#xff1f;如果你开发的项目的功能是固定的&#xff0c;永…

2023年12月GESP认证C++等级考试(八级)真题试卷

2023年12月GESP认证C等级考试&#xff08;八级&#xff09;真题试卷 题目总数&#xff1a;27 总分数&#xff1a;100 选择题 第 1 题 单选题 小杨要从A城到B城&#xff0c;⼜想顺路游览⼀番。他有两个选项&#xff1a;1、坐⾼铁路到C城游览&#xff0c;再坐⾼铁或飞机到B…

微信小程序制作瀑布流

先看效果&#xff1a; 瀑布流分为左侧和右侧 看代码&#xff1a; <view class"shops-tops"><view id"left"><view class"left"><image src"https://pic.imgdb.cn/item/6583d9d6c458853aef979621.jpg" class&quo…

【解决Typora图片不是显示问题】PicGo+Github+Typora+ onedrive/坚果云 实现笔记同步

【解决Typora图片不是显示问题】PicGo、Github、Typora实现笔记同步 写在前面&#xff1a; typora笔记软件使用记录typora图片上传问题&#xff1a;原因分析&#xff1a;解决方案&#xff1a;PicGoGithubTypora 坚果云/onedrive 实现笔记同步第一步. 设置上传模式&#xff1a;u…

配置BGP的基本示例

BGP简介 定义 边界网关协议BGP&#xff08;Border Gateway Protocol&#xff09;是一种实现自治系统AS&#xff08;Autonomous System&#xff09;之间的路由可达&#xff0c;并选择最佳路由的距离矢量路由协议。早期发布的三个版本分别是BGP-1&#xff08;RFC1105&#xff0…

Python的环境搭建环境配置()

Python 环境搭建 一,下载Python 1.去官网 www.python.org 下载环境 2.如图点击Download 3.选择Windows 4.如图直接下载 5.直接勾选 6.后面就一直默认选项 Win11 安装目录 不能放在C盘的ProgramFIle路径下 二,测试环境是否安装成功 1.winR 输入cmd 2.输入python --versio…

【K8s】2# 使用kuboard管理K8s集群(kuboard安装)

文章目录 安装 Kuboard v3部署计划 安装登录测试 安装 Kuboard v3 部署计划 在正式安装 kuboard v3 之前&#xff0c;需做好一个简单的部署计划的设计&#xff0c;在本例中&#xff0c;各组件之间的连接方式&#xff0c;如下图所示&#xff1a; 假设用户通过 http://外网IP:80…

AIGC:阿里开源大模型通义千问部署与实战

1 引言 通义千问-7B&#xff08;Qwen-7B&#xff09;是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样&#xff0c;覆盖广泛&#xff0c;包括大量网络文本、专业书籍…

[CVPR-23] Instant Volumetric Head Avatars

[paper | code | proj] 本文提出INSTA。INSTA是一种backward mapping方法。该方法基于NeRF建立标准空间&#xff0c;形变空间&#xff08;任意表情&#xff09;通过映射回标准空间&#xff0c;实现渲染。为实现形变空间中任意点向标准空间的映射&#xff0c;对形变空间中的任意…

rk3568 bootLoader编译

Linux系统uboot、linux kernel、rootfs移植学习笔记&#xff08;一&#xff09;_uboot 删除环境变量-CSDN博客 板信息配置文件&#xff1a;device/rockchip/rk356x/BoardConfig-IAC-RK3568-MB-BETA-V1_00.mk uboot编译入口 Linux系统uboot、linux kernel、rootfs移植学习笔记&…

许久不见钱伯斯,他说大部分AI公司会失败,但值得一拼

前言&#xff1a;AI大饼是否还不够大&#xff0c;于是我也想多画一画 【科技明说 &#xff5c; 科技热点关注】 许多年不见钱伯斯&#xff0c;他发声指出大部分AI公司会失败&#xff0c;但值得一拼。 钱伯斯(John Chambers)以长期担任思科(Cisco)首席执行官的硅谷传奇人物而…

C++入门【12-C++ 数组】

C 数组 C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量&#xff0c;比如 number0、number1、...、number99&#xff0…

软协打卡---内网穿透实现

注意&#xff1a;仅为个人学习知识&#xff0c;其中理论知识不一定正确。 目录 1.前言 2.ip与域名的简单说明 ip与域名 公共ip和内网ip 内网穿透了解 为什么使用内网穿透 内网穿透是什么 3.PHPSTUDY了解 4.花生壳的使用 最终结果&#xff1a; &#xff08;实际上大部…

Elasticsearch:什么是文本分类?

文本分类定义 - text classification 文本分类是一种机器学习&#xff0c;它将文本文档或句子分类为预定义的类或类别。 它分析文本的内容和含义&#xff0c;然后使用文本标签为其分配最合适的标签。 文本分类的实际应用包括情绪分析&#xff08;确定评论中的正面或负面情绪&…

JavaGUI(但期末速成版)之容器和控件

点击返回标题->JavaGUI期末速成版-CSDN博客 前言 依旧先声明&#xff0c;本篇记录的JavaGUI编程都是十分精简的&#xff0c;内容只取常用的、套路的、应付期末考试的。 在学习本篇之前&#xff0c;很有必要先弄清楚Java基于swing包下的图形化编程的层次逻辑。 在前一篇中&a…

EasyUiAutotest 项目目录设置及说明

一、前置说明 清晰的项目目录结构非常重要的&#xff0c;它能够为项目提供结构化、易维护、易理解的环境。 二、目录设置及说明 项目目录结构如下&#xff1a; EasyUiAutotest ├───atme # me&#xff0c;供个人使用的目录&#xff0c;与整体项目无关&#xff0c;存…

指针---你真的会使用指针吗?

指针作为C语言中的一个部分&#xff0c;可以说指针是C语言的核心&#xff0c;那么它的难度肯定是不言而喻的&#xff0c;总是能把人给绕得找不到方向。 今天我就好好的说一说指针这个东西。 1、何为指针&#xff1f; 指针是C语言中用来存放地址的一个变量类型。我们可以将指针看…