如题,如何在Java项目中调用ChatGPT的接口,我看了官方文档看不懂。
github有直接写好的,拿下来做个参考可以。 比如chatgptjava 。
请把这整篇文章过一遍:
[https://juejin.cn/post/7208907027841171512]
你使用的应该是openAI提供的API-key,并且使用软件对某一个代理IP和端口进行了监听,参照这里面的第2.3.6点:
@Slf4j
@Component
public class OpenAiApi {
@Value("${open.ai.url}")
private String url;
@Value("${open.ai.token}")
private String token;
private static final MultiThreadedHttpConnectionManagerCONNECTION_MANAGER=new MultiThreadedHttpConnectionManager();
static {
// 默认单个host最大链接数
CONNECTION_MANAGER.getParams().setDefaultMaxConnectionsPerHost(
Integer.valueOf(20));
// 最大总连接数,默认20
CONNECTION_MANAGER.getParams()
.setMaxTotalConnections(20);
// 连接超时时间
CONNECTION_MANAGER.getParams()
.setConnectionTimeout(60000);
// 读取超时时间
CONNECTION_MANAGER.getParams().setSoTimeout(60000);
}
public ExecuteRet get(Stringpath, Map<String, String> headers) {
GetMethod method = new GetMethod(url +path);
if (headers== null) {
headers = new HashMap<>();
}
headers.put("Authorization", "Bearer " + token);
for (Map.Entry<String, String> h : headers.entrySet()) {
method.setRequestHeader(h.getKey(), h.getValue());
}
return execute(method);
}
public ExecuteRet post(Stringpath, Stringjson, Map<String, String> headers) {
try {
PostMethod method = new PostMethod(url +path);
//log.info("POST Url is {} ", url + path);
// 输出传入参数
log.info(String.format("POST JSON HttpMethod's Params = %s",json));
StringRequestEntity entity = new StringRequestEntity(json, "application/json", "UTF-8");
method.setRequestEntity(entity);
if (headers== null) {
headers = new HashMap<>();
}
headers.put("Authorization", "Bearer " + token);
for (Map.Entry<String, String> h : headers.entrySet()) {
method.setRequestHeader(h.getKey(), h.getValue());
}
return execute(method);
} catch (UnsupportedEncodingExceptionex) {
log.error(ex.getMessage(),ex);
}
return new ExecuteRet(false, "", null, -1);
}
public ExecuteRet execute(HttpMethodmethod) {
HttpClient client = new HttpClient(CONNECTION_MANAGER);
// 创建代理对象
HttpHost proxy = new HttpHost("你的代理主机ip", 你的代理主机端口);
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
int statusCode = -1;
String respStr = null;
boolean isSuccess = false;
try {
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF8");
statusCode = client.executeMethod(method);
method.getRequestHeaders();
// log.info("执行结果statusCode = " + statusCode);
InputStreamReader inputStreamReader = new InputStreamReader(method.getResponseBodyAsStream(), "UTF-8");
BufferedReader reader = new BufferedReader(inputStreamReader);
StringBuilder stringBuffer = new StringBuilder(100);
String str;
while ((str = reader.readLine()) != null) {
log.debug("逐行读取String = " + str);
stringBuffer.append(str.trim());
}
respStr = stringBuffer.toString();
if (respStr != null) {
log.info(String.format("执行结果String = %s, Length = %d", respStr, respStr.length()));
}
inputStreamReader.close();
reader.close();
// 返回200,接口调用成功
isSuccess = (statusCode == HttpStatus.SC_OK);
} catch (IOExceptionex) {
} finally {
method.releaseConnection();
}
return new ExecuteRet(isSuccess, respStr,method, statusCode);
}
}
核心的设置代理的代码:
HttpHost proxy = new HttpHost("你的代理主机ip", 你的代理主机端口);
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
如果你不是采用HttpClient的方法,其他的发起请求的客户端也是相似的,只要设置响应的代理主机就可以了,其他代码不需要变动
如何从命令行创建Java Gradle项目? 它应该创建标准的maven文件夹布局,如下图所示。 更新: 那么有办法在一个命令中完成吗?
我找到了一个符合我目的的图书馆,但它是写在Kotlin上的。我可以在Java项目中使用它吗? 框架:https://github.com/mpetlyuk/initial_tips Kotlin上的用法:
问题内容: 我已经使用eclipse中的 m2e插件* 将 Java Web项目 转换为 Maven项目 。现在,我需要将其转换回Java Web项目。现在,如何将其更改回Java Web项目。 * 问题答案: 请尝试以下操作: 在Maven项目上打开上下文菜单 选择“ Maven”->“禁用Maven自然” 希望能有所帮助。
如题,如果想用Java处理一段带有html标签的字符串。 要求: ①如果只存在后半部分标签,不存在前半部分标签,就将后半部分标签删除。 ②如果只存在前半部分标签,不存在后半部分标签,就将前半部分标签删除。 例如下面这段: 平明后的</u> 标签被我故意删除了;洛阳前的<u>标签被我故意删除了。 有什么办法可以删除这些不完整的标签,最好还能保留标签内容的? 不是提取标签内容,是将不完整的标签删除。
我们正在尝试使用java webstart开发一个打印应用程序。我们使用eclipse将jar创建为普通jar文件。我们的应用程序需要外部库来连接数据库、将数据转换为字节等。 我们以前可以通过将必要的JAR放入jre文件夹的/ext/目录来实现这一点。然而,这导致了与tomcat服务器的库冲突,所以我们希望避免这种方法。 我们还尝试将项目导出为可运行的jar,因为所需的库也已打包在jar中。但是当