forked from hippochatgpt/server
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
adb28a2
commit bdcc99c
Showing
91 changed files
with
5,788 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<parent> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-parent</artifactId> | ||
<version>2.5.4</version> | ||
<relativePath/> <!-- lookup parent from repository --> | ||
</parent> | ||
<groupId>com.unfbx</groupId> | ||
<artifactId>chatgpt-java</artifactId> | ||
<version>1.0.8</version> | ||
<name>chatgpt-java</name> | ||
<description>OpenAI Java SDK, OpenAI Api for Java. ChatGPT Java SDK .</description> | ||
|
||
<properties> | ||
<java.version>1.8</java.version> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<maven.compiler.source>1.8</maven.compiler.source> | ||
<maven.compiler.target>1.8</maven.compiler.target> | ||
<retrofit2.version>2.9.0</retrofit2.version> | ||
<mysql-connector-java.version>8.0.32</mysql-connector-java.version> | ||
<mybatis-plus.version>3.5.3.1</mybatis-plus.version> | ||
<druid-spring-boot-starter.version>1.2.16</druid-spring-boot-starter.version> | ||
<reactor.version>3.5.4</reactor.version> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-web</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.projectlombok</groupId> | ||
<artifactId>lombok</artifactId> | ||
<version>1.18.26</version> | ||
<scope>compile</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.fasterxml.jackson.core</groupId> | ||
<artifactId>jackson-databind</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>cn.hutool</groupId> | ||
<artifactId>hutool-all</artifactId> | ||
<version>5.8.15</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.squareup.okhttp3</groupId> | ||
<artifactId>okhttp-sse</artifactId> | ||
<version>3.14.9</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.squareup.okhttp3</groupId> | ||
<artifactId>logging-interceptor</artifactId> | ||
<version>3.14.9</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.squareup.retrofit2</groupId> | ||
<artifactId>retrofit</artifactId> | ||
<version>${retrofit2.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.squareup.retrofit2</groupId> | ||
<artifactId>converter-jackson</artifactId> | ||
<version>${retrofit2.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.squareup.retrofit2</groupId> | ||
<artifactId>adapter-rxjava2</artifactId> | ||
<version>${retrofit2.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>junit</groupId> | ||
<artifactId>junit</artifactId> | ||
<version>4.13.2</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.jetbrains</groupId> | ||
<artifactId>annotations</artifactId> | ||
<version>24.0.1</version> | ||
<scope>compile</scope> | ||
</dependency> | ||
<!-- druid数据库连接池 --> | ||
<dependency> | ||
<groupId>mysql</groupId> | ||
<artifactId>mysql-connector-java</artifactId> | ||
<version>${mysql-connector-java.version}</version> | ||
<scope>runtime</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.baomidou</groupId> | ||
<artifactId>mybatis-plus-boot-starter</artifactId> | ||
<version>${mybatis-plus.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.baomidou</groupId> | ||
<artifactId>mybatis-plus-core</artifactId> | ||
<version>${mybatis-plus.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.baomidou</groupId> | ||
<artifactId>mybatis-plus-annotation</artifactId> | ||
<version>${mybatis-plus.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.baomidou</groupId> | ||
<artifactId>mybatis-plus-extension</artifactId> | ||
<version>${mybatis-plus.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.alibaba</groupId> | ||
<artifactId>druid-spring-boot-starter</artifactId> | ||
<version>${druid-spring-boot-starter.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.projectreactor</groupId> | ||
<artifactId>reactor-core</artifactId> | ||
<version>${reactor.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>commons-codec</groupId> | ||
<artifactId>commons-codec</artifactId> | ||
<version>${commons-codec.version}</version> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-maven-plugin</artifactId> | ||
<version>2.5.4</version> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.hippo.chatgpt; | ||
|
||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
import org.springframework.context.annotation.ComponentScan; | ||
|
||
/** | ||
* @author xw | ||
*/ | ||
@SpringBootApplication | ||
@ComponentScan("com.hippo.chatgpt.*") | ||
public class ChatGPTApplication { | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(ChatGPTApplication.class, args); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
package com.hippo.chatgpt.client; | ||
|
||
import com.hippo.chatgpt.config.OpenAiConfig; | ||
import com.hippo.chatgpt.interceptor.OpenAILogger; | ||
import com.hippo.chatgpt.interceptor.OpenAiResponseInterceptor; | ||
import okhttp3.OkHttpClient; | ||
import okhttp3.logging.HttpLoggingInterceptor; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.stereotype.Component; | ||
|
||
import javax.annotation.Resource; | ||
import java.net.InetSocketAddress; | ||
import java.net.Proxy; | ||
import java.util.concurrent.TimeUnit; | ||
|
||
/** | ||
* @author xiewei | ||
*/ | ||
@Component | ||
public class InitClient { | ||
|
||
@Resource | ||
private OpenAiConfig openAiConfig; | ||
|
||
@Bean | ||
public OpenAiClient openAiClient() { | ||
//可以为null | ||
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7890)); | ||
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger()); | ||
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); | ||
OkHttpClient okHttpClient = new OkHttpClient | ||
.Builder() | ||
.proxy(proxy) | ||
.addInterceptor(httpLoggingInterceptor) | ||
.addInterceptor(new OpenAiResponseInterceptor()) | ||
.connectTimeout(10, TimeUnit.SECONDS) | ||
.writeTimeout(30, TimeUnit.SECONDS) | ||
.readTimeout(30, TimeUnit.SECONDS) | ||
.build(); | ||
return OpenAiClient.builder() | ||
//支持多key传入,请求时候随机选择 | ||
.apiKey(openAiConfig.getApiKeys()) | ||
.okHttpClient(okHttpClient) | ||
//自己做了代理就传代理地址,没有可不不传 | ||
// .apiHost("https://自己代理的服务器地址/") | ||
.build(); | ||
} | ||
|
||
@Bean | ||
public OpenAiStreamClient openAiStreamClient() { | ||
//国内访问需要做代理,国外服务器不需要 | ||
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7890)); | ||
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger()); | ||
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); | ||
OkHttpClient okHttpClient = new OkHttpClient | ||
.Builder() | ||
.proxy(proxy) | ||
.addInterceptor(httpLoggingInterceptor) | ||
.connectTimeout(30, TimeUnit.SECONDS) | ||
.writeTimeout(30, TimeUnit.SECONDS) | ||
.readTimeout(30, TimeUnit.SECONDS) | ||
.build(); | ||
return OpenAiStreamClient.builder() | ||
.apiKey(openAiConfig.getApiKeys()) | ||
.okHttpClient(okHttpClient) | ||
//自己做了代理就传代理地址,没有可不不传 | ||
// .apiHost("https://自己代理的服务器地址/") | ||
.build(); | ||
} | ||
|
||
} |
Oops, something went wrong.