跳到主要内容

Oracle Cloud Infrastructure GenAI

Generative AI Service 提供来自 Cohere 与 Meta 的预训练基础模型访问。 模型可用性参见此处

借助专用 AI 集群,你可以在仅属于自己的专用 GPU 上托管基础模型。这些集群可提供生产场景所需的稳定、高吞吐性能,并支持托管与微调工作负载。

Maven 依赖

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-oci-genai</artifactId>
<version>1.18.1-beta28</version>
</dependency>

此外,你还需要为 OCI SDK 选择 HTTP 客户端,默认使用基于 Jersey 3 的版本:

<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-common-httpclient-jersey3</artifactId>
<version>${oci-sdk.version}</version>
</dependency>

如果运行时是 Java EE/Jakarta EE 8 或更早版本,请使用基于 Jersey 2 的版本:

<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
<version>${oci-sdk.version}</version>
</dependency>

更多信息参见 OCI SDK 文档

API

包名:dev.langchain4j.community.model.oracle.oci.genai

由于配置不同,API 按 Cohere 与 Meta 模型分开。

Meta 模型:

  • OciGenAiChatModel - 适用于所有 OCI GenAi 通用聊天模型(llama)
  • OciGenAiStreamingChatModel - OCI GenAi 通用聊天模型的流式 API

Cohere 模型:

  • OciGenAiCohereChatModel - 适用于所有 OCI GenAi Cohere 聊天模型
  • OciGenAiCohereStreamingChatModel - OCI GenAi Cohere 聊天模型的流式 API

示例

同步 Cohere 聊天模型配合工具调用的示例:

var model = OciGenAiCohereChatModel.builder()
.modelName("cohere.command-r-08-2024")
.compartmentId("ocid1.tenancy.oc1..aa....")
.authProvider(new ConfigFileAuthenticationDetailsProvider("DEFAULT"))
.maxTokens(600)
.temperature(0.2)
.topP(0.75)
.build();

Assistant assistant = AiServices.builder(Assistant.class)
.chatModel(model)
.tools(new Calculator())
.chatMemory(MessageWindowChatMemory.withMaxMessages(10))
.build();

String answer = assistant.chat("Calculate square root of 16");

流式 Meta 聊天模型示例:

var model = OciGenAiStreamingChatModel.builder()
.modelName("meta.llama-3.3-70b-instruct")
.compartmentId("ocid1.tenancy.oc1..aa....")
.authProvider(new ConfigFileAuthenticationDetailsProvider("DEFAULT"))
.build();

CompletableFuture<ChatResponse> futureResponse = new CompletableFuture<>();

model.doChat(ChatRequest.builder()
.messages(UserMessage.from("Tell me a joke about Java"))
.build(),
new StreamingChatResponseHandler() {
@Override
public void onPartialResponse(String partialResponse) {
System.out.print(partialResponse);
}
@Override
public void onCompleteResponse(ChatResponse completeResponse) {
futureResponse.complete(completeResponse);
}
@Override
public void onError(Throwable error) {
futureResponse.completeExceptionally(error);
}
});
futureResponse.join();