当前位置:   article > 正文

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

在国内如何使用某知名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);

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

点击在线体验

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/156493
推荐阅读
相关标签
  

闽ICP备14008679号