Giter Site home page Giter Site logo

asleepyfish / chatgpt Goto Github PK

View Code? Open in Web Editor NEW
244.0 5.0 63.0 177 KB

实现可连续对话和流式输出的ChatGPT API(基于SpringBoot和Vue实现流式输出)

Home Page: https://blog.csdn.net/qq_41821963/article/details/128992539

License: MIT License

Java 100.00%

chatgpt's People

Contributors

asleepyfish avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

chatgpt's Issues

无法流式返回

使用baseUrl来反向代理,不通过proxy的时候,无法流式返回结果

实际使用发现时间会慢,源码发现是先阻塞接受所有消息再以流式返回

这部分我尝试去掉blockingForEach想实现api接收到立马返回给前端,但总是报错,空指针,或者别的.这部分能有颁发解决吗?本人小白,太深奥的也没看明白.. 特此来请教作者大佬super.streamChatCompletion(chatCompletionRequest).doOnError(Throwable::printStackTrace).blockingForEach(chunk -> {
chunk.getChoices().stream().map(choice -> choice.getMessage().getContent())
.filter(Objects::nonNull).findFirst().ifPresent(o -> {
try {
os.write(o.getBytes(Charset.defaultCharset()));
os.flush();
} catch (Exception e) {
throw new RuntimeException(e);
}
});
chunks.add(chunk);
});

多轮会话的缓存问题

目前多轮会话根据传参user为Key,使用com.google.common.cache 储存在本地,集群部署后缓存无法共享导致多轮会话信息丢失。
能否在配置中支持redis等中间件来代替本地缓存?

OkHttpClient 默认并发数问题

OpenAiProxyService类中使用defaultClient方法初始化OKHttpClient,Builder时没有指定dispatcher,自动使用默认构造器
此行为限制了最大只能有64个请求且每个host最多5个请求
实际压测时发现接口大量超时,起初怀疑是目标代理带宽/并发等问题,最后调查代理端一切正常,翻调用源码发现此问题
OpenAiProxyService方法没有提供客制化Client的构造方法,目前依然只能通过重写源码的方式解决

另外在压测时发现,如果目标地址返回null,数据也会被写入本地cache,但再次读取时会报空指针异常。

streamChatWithWeb 第一次执行能够正常输出,第二次之后再执行就提示 java.io.InterruptedIOException: executor rejected

java.io.InterruptedIOException: executor rejected
at okhttp3.internal.connection.RealCall$AsyncCall.executeOn(RealCall.kt:501)
at okhttp3.Dispatcher.promoteAndExecute(Dispatcher.kt:184)
at okhttp3.Dispatcher.enqueue$okhttp(Dispatcher.kt:125)
at okhttp3.internal.connection.RealCall.enqueue(RealCall.kt:164)
at retrofit2.OkHttpCall.enqueue(OkHttpCall.java:147)
at com.theokanning.openai.service.OpenAiService.lambda$stream$0(OpenAiService.java:294)
at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:71)
at io.reactivex.Flowable.subscribe(Flowable.java:14935)
at io.reactivex.internal.operators.flowable.FlowableMap.subscribeActual(FlowableMap.java:37)
at io.reactivex.Flowable.subscribe(Flowable.java:14935)
at io.reactivex.internal.operators.flowable.FlowableDoOnEach.subscribeActual(FlowableDoOnEach.java:50)
at io.reactivex.Flowable.subscribe(Flowable.java:14935)
at io.reactivex.internal.operators.flowable.BlockingFlowableIterable.iterator(BlockingFlowableIterable.java:42)
at io.reactivex.Flowable.blockingForEach(Flowable.java:5772)
at io.github.asleepyfish.util.OpenAiUtils.createStreamChatCompletion(OpenAiUtils.java:107)
at io.github.asleepyfish.util.OpenAiUtils.createStreamChatCompletion(OpenAiUtils.java:78)
at io.github.asleepyfish.util.OpenAiUtils.createStreamChatCompletion(OpenAiUtils.java:74)
at io.github.asleepyfish.util.OpenAiUtils.createStreamChatCompletion(OpenAiUtils.java:70)
at io.github.asleepyfish.util.OpenAiUtils.createStreamChatCompletion(OpenAiUtils.java:66)
at com.asleepyfish.controller.ChatGPTController.streamChatWithWeb(ChatGPTController.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:670)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

关于代理地址的建议

现在类似于https://openai.api2d.net这样的代理服务用不了。

建议OpenAiProxyService.BASE_URL不要写死,ProxyHost和ProxyPort统一改为ProxyUrl。
你用new Proxy(Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
这样如果反向代理是HTTPS,就无法使用了。而且大多数反向代理HTTPS是自签名证书,建议忽略证书校验。

还有,README最好能写一下不通过Spring Boot,仅通过JDK的main方法开启连续对话的功能,还有自定义system提示词,因为还有很多场景是属于特例化的任务,比如公文写作、小说创作之类的,往往需要把公司背景、小说大纲填上去作为系统提示词。

我们的用户有的是在Linux命令提示符下进行连续回话,并根据返回结果进行自动化运维。
还有些场景,比如写论文,我们的用户是在桌面上开启一个Swing的窗口进行对话的。
所以如果和Spring Boot深度集成,会比较受限。

还有一个重要的事情,就是可否写一下如何旁路录制对话过程和每次消耗的Token。

作者辛苦了,谢谢。

java.lang.NoSuchMethodError: okio.BufferedSource.getBuffer()Lokio/Buffer;

2023-04-26 18:31:37.229 ERROR 31652 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: okio.BufferedSource.getBuffer()Lokio/Buffer;] with root cause

java.lang.NoSuchMethodError: okio.BufferedSource.getBuffer()Lokio/Buffer;

the error occurred when testing

关于查询账单和订阅部分的bug

目前官网好像对于查询使用量的api进行修改,其中的token使用的是另一个session key而不是在配置文件中配置的api key,所以在使用OpenAiUtils.billingUsage()方法的时候可能需要对token进行修改。新版的session key可以从官网中进行一次查询而获取到
image

作者大大可以对这个接口进行一个重新适配吗

报错问题反馈

出现了这个错误,能帮忙看下么
[java.io.IOException: unexpected end of stream on https://api.openai.com/..., java.io.IOException: unexpected end of stream on https://api.openai.com/...]
2023-05-22 18:30:08.079 [scheduling-1] ERROR i.g.a.service.OpenAiProxyService - answer failed 1 times, the error message is: java.io.IOException: unexpected end of stream on https://api.openai.com/...

可以给一个兼容springboot3 版本的包嘛

开发版本信息

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.1</version>
        <relativePath/> <!-- lookup parent from repository -->
  </parent>

<properties>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <hutool.version>5.8.11</hutool.version>
        <bouncycastle.version>1.72</bouncycastle.version>
        <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
        <hb0730-jsons.version>1.0.3</hb0730-jsons.version>
        <knife4j.version>4.1.0</knife4j.version>
        <jwt.version>4.2.2</jwt.version>
   </properties>

会有以下报错

	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:491) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1324) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1161) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:915) ~[spring-context-6.0.3.jar:6.0.3]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[spring-context-6.0.3.jar:6.0.3]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.1.jar:3.0.1]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[spring-boot-3.0.1.jar:3.0.1]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432) ~[spring-boot-3.0.1.jar:3.0.1]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-3.0.1.jar:3.0.1]
	at com.artefact.content_engine.base.BootAdminApp.bootstrap(BootAdminApp.java:28) ~[classes/:na]
	at com.artefact.content_engine.BootAdminApplication.main(BootAdminApplication.java:19) ~[classes/:na]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [okhttp3.OkHttpClient]: Factory method 'okHttpClient' threw exception with message: javax/servlet/ServletOutputStream
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:171) ~[spring-beans-6.0.3.jar:6.0.3]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-6.0.3.jar:6.0.3]
	... 18 common frames omitted
Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletOutputStream
	at io.github.asleepyfish.config.ChatGPTAutoConfigure.okHttpClient(ChatGPTAutoConfigure.java:30) ~[chatgpt-1.3.4.jar:na]
	at io.github.asleepyfish.config.ChatGPTAutoConfigure$$SpringCGLIB$$0.CGLIB$okHttpClient$2(<generated>) ~[chatgpt-1.3.4.jar:na]
	at io.github.asleepyfish.config.ChatGPTAutoConfigure$$SpringCGLIB$$2.invoke(<generated>) ~[chatgpt-1.3.4.jar:na]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.0.3.jar:6.0.3]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-6.0.3.jar:6.0.3]
	at io.github.asleepyfish.config.ChatGPTAutoConfigure$$SpringCGLIB$$0.okHttpClient(<generated>) ~[chatgpt-1.3.4.jar:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:139) ~[spring-beans-6.0.3.jar:6.0.3]
	... 19 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletOutputStream
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
	... 30 common frames omitted```

代理

麻烦问一下代理是那种代理,有推荐的搭建教程吗

救救孩子

大佬,在用你给的demo没有任何问题,但我自己的所以项目都报同一个错误
Error creating bean with name 'okHttpClient' defined in io.github.asleepyfish.config.ChatGPTAutoConfigure: Failed to instantiate [okhttp3.OkHttpClient]: Factory method 'okHttpClient' threw exception with message: javax/servlet/ServletOutputStream
救救孩子吧

引入1.3.5后 运行不了啊

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'okHttpClient' defined in io.github.asleepyfish.config.ChatGPTAutoConfigure: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [okhttp3.OkHttpClient]: Factory method 'okHttpClient' threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/PropertyNamingStrategies
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:769)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:326)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1313)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1302)
at com.wonderscp.Application.main(Application.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [okhttp3.OkHttpClient]: Factory method 'okHttpClient' threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/PropertyNamingStrategies
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
... 25 common frames omitted
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/PropertyNamingStrategies
at io.github.asleepyfish.service.openai.OpenAiService.defaultObjectMapper(OpenAiService.java:404)
at io.github.asleepyfish.service.openai.OpenAiService.(OpenAiService.java:70)
at io.github.asleepyfish.config.ChatGPTAutoConfigure.okHttpClient(ChatGPTAutoConfigure.java:30)
at io.github.asleepyfish.config.ChatGPTAutoConfigure$$EnhancerBySpringCGLIB$$c967d178.CGLIB$okHttpClient$0()
at io.github.asleepyfish.config.ChatGPTAutoConfigure$$EnhancerBySpringCGLIB$$c967d178$$FastClassBySpringCGLIB$$114df344.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
at io.github.asleepyfish.config.ChatGPTAutoConfigure$$EnhancerBySpringCGLIB$$c967d178.okHttpClient()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 26 common frames omitted
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.PropertyNamingStrategies
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 39 common frames omitted

system消息

请问,怎么发送role为system类的消息?RoleEnum.SYSTEM

代理主机的问题

我自己单独写的程序调用openai的API一切正常,api的URL,api.openai.com换成腾讯云的云函数主机就可以了。但是我用你的这个依赖,代理主机也是写的我这个腾讯云的云函数主机,使用的时候,报错:
i.g.a.service.OpenAiProxyService : answer failed 1 times, the error message is: java.io.IOException: Unexpected response code for CONNECT: 400

javax.net.ssl.SSLException

在使用该工具类的时候跑出来一下错误
OpenAiUtils.createCompletion("docker 命令")

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

大概的意思是没有使用ssl证书,请问如何配置

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.