[]
GcExcel Java 提供了人工智能功能和模型请求处理程序,使您能够将用户提示和数据发送到指定的大语言模型,将模型返回的结果写入目标单元格,并将复杂的人工智能处理工作流程无缝集成到计算链中。借助人工智能功能,您可以在电子表格中轻松实现文本查询、数据分析、文本生成、文本翻译和文本情感分析。
在使用人工智能助手之前,请确保您已从 OpenAI 或其他人工智能服务提供商处获取有效的 API 密钥。
GcExcel Java 提供了 IAIModelRequestHandler 接口,帮助用户实现与人工智能模型完整的自定义交互流程。
sendRequestAsync 方法用于提交人工智能请求并返回异步结果。您可以参考人工智能功能的示例代码,也可根据需要自行实现此方法,以管理请求的生命周期,包括构建请求、发送请求、处理响应和错误。您还可以管理访问凭证、模型选择和参数配置;确保调用安全(如凭证保护、加密传输等);根据需要集成中间件(如敏感词过滤和日志审计);设置重试和超时等策略,以提高调用的安全性和稳定性。
在使用模型请求处理程序时,GcExcel Java 不会干预通过 IAIModelRequestHandler 发起的模型请求工作流程,也不会存储您的 API 密钥或任何请求/响应数据。
/**
* 针对 OpenAI API 的 IAIModelRequestHandler 实现。
*/
public class OpenAIModelRequestHandler implements IAIModelRequestHandler {
private String _apiEndpoint;
private String _apiKey;
private String _model;
public OpenAIModelRequestHandler(String apiEndpoint, String apiKey, String model) {
if (apiEndpoint == null || apiEndpoint.trim().isEmpty())
throw new IllegalArgumentException("API 端点不能为空。");
if (apiKey == null || apiKey.trim().isEmpty())
throw new IllegalArgumentException("API 密钥不能为空。");
_apiEndpoint = apiEndpoint.replaceAll("/$", "");
_apiKey = apiKey;
_model = model;
}
@Override
public CompletableFuture<AIModelResponse> sendRequestAsync(AIModelRequest request) {
CompletableFuture<AIModelResponse> result = new CompletableFuture<>();
if (request == null) {
AIModelResponse modelResponse = new AIModelResponse();
modelResponse.setSuccess(false);
System.err.println("请求不能为空。");
result.complete(modelResponse);
return result;
}
OpenAIClientAsync openAIClient = OpenAIOkHttpClientAsync.builder()
.apiKey(_apiKey)
.baseUrl(_apiEndpoint)
.build();
ChatCompletionCreateParams.Builder builder = ChatCompletionCreateParams.builder();
for (AIMessage item : request.getMessages()) {
switch (item.getRole().toLowerCase()) {
case "system":
builder.addSystemMessage(item.getContent());
break;
case "user":
builder.addUserMessage(item.getContent());
break;
default:
throw new RuntimeException("未知的消息角色: " + item.getRole());
}
}
builder.model(_model);
ChatCompletionCreateParams params = builder.build();
CompletableFuture<ChatCompletion> chatCompletion = openAIClient.chat().completions().create(params);
chatCompletion.whenComplete((response, exception) -> {
try {
if (exception != null) {
AIModelResponse errorResponse = new AIModelResponse();
errorResponse.setSuccess(false);
System.err.println("发生错误: " + exception.getMessage());
result.complete(errorResponse);
} else {
if (response != null &&!response.choices().isEmpty()) {
StringBuilder contentBuilder = new StringBuilder();
for (ChatCompletion.Choice choice : response.choices()) {
choice.message();
if (choice.message().content().isPresent()) {
contentBuilder.append(choice.message().content().get());
}
}
AIModelResponse successResponse = new AIModelResponse();
successResponse.setSuccess(true);
successResponse.setContent(contentBuilder.toString());
result.complete(successResponse);
} else {
AIModelResponse noContentResponse = new AIModelResponse();
noContentResponse.setSuccess(false);
System.err.println("未从模型收到内容。");
result.complete(noContentResponse);
}
}
} finally {
try {
openAIClient.close();
} catch (Exception e) {
System.err.println("关闭 OpenAI 客户端时出错: " + e.getMessage());
}
}
});
return result;
}
}当人工智能功能返回以下错误值时,请参考此表排查可能的原因。
错误值 | 描述 |
|---|---|
#VALUE! | 此错误由无效的输入参数或内部错误导致,从而致使函数执行失败。 |
#BUSY! | 此错误表示函数正在异步计算,结果尚未得出。 |
#CONNECT! | 当 IAIModelRequestHandler 返回错误响应或发生网络连接故障时,会出现此错误。 |
#NA! | 此错误表明未注册 Workbook.AIModelRequestHandler。 |
始终清理敏感的电子表格数据并对其去标识化。
对于请求返回的结果,确保对敏感字段进行去标识化处理。
验证所有由人工智能生成的内容。
对输出结果进行安全检查。
类型=警告
人工智能生成内容免责声明
内容生成风险
本服务利用用户接入的第三方人工智能模型生成输出内容。由于模型架构和训练数据存在固有局限性,结果可能包含不准确、遗漏或误导性内容。尽管我们实施了 “提示工程” 并设置技术限制来优化输出,但我们无法消除因模型根本缺陷产生的所有错误风险。
用户验证义务
通过使用本服务,您知悉并同意:
对所有生成的内容进行人工验证。
避免在高风险场景(法律、医疗、金融等)中使用未经验证的输出内容。
若因依赖生成的内容而导致任何直接/间接损害,我们不承担责任。
技术限制
我们对以下情况不承担责任:
由第三方模型缺陷或逻辑错误导致的输出失败。
通过容错程序进行错误恢复尝试未成功。
当前人工智能技术固有的技术限制。
知识产权合规
您必须确保:
接入的模型/内容不侵犯第三方权利。
不通过本服务处理非法/敏感材料。
遵守模型提供商的知识产权协议。
协议更新
我们保留修改这些条款的权利,以适应:
技术进步(例如新的人工智能安全协议)。
法规变化(例如更新的人工智能治理框架)。
服务架构改进。
由于人工智能模型具有不确定性,相同的公式在重新计算时可能会产生不同的结果。