主题
OpenAI 官方 SDK
NOTE
这是 OpenAI 官方 SDK 集成的文档,它使用 官方 OpenAI Java SDK。
LangChain4j 提供了 3 种不同的 OpenAI 集成来使用嵌入模型,这里是第 2 种:
- OpenAI 使用对 OpenAI REST API 的自定义 Java 实现,最适合与 Quarkus(因其使用 Quarkus REST 客户端)以及 Spring(因其使用 Spring 的 RestClient)搭配。
- OpenAI 官方 SDK 使用官方的 OpenAI Java SDK。
- Azure OpenAI 使用微软的 Azure SDK,最适合在你使用微软 Java 技术栈(包括高级 Azure 认证机制)时。
本集成的适用场景
本集成使用 OpenAI Java SDK GitHub 仓库,适用于所有可由以下方提供的 OpenAI 模型:
- OpenAI
- Azure OpenAI
- GitHub Models
它也能与支持 OpenAI API 的模型配合使用。
OpenAI 文档
Maven 依赖
xml
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-official</artifactId>
<version>1.22.0-beta32</version>
</dependency>1
2
3
4
5
2
3
4
5
配置模型
要使用 OpenAI 模型,你通常需要一个端点 URL、一个 API 密钥和一个模型名。这取决于模型托管在哪里,本集成尝试通过一些自动配置让它更简单:
通用配置
java
import com.openai.models.embeddings.EmbeddingModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.openaiofficial.OpenAiOfficialEmbeddingModel;
import static com.openai.models.embeddings.EmbeddingModel.TEXT_EMBEDDING_3_SMALL;
// ....
EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.baseUrl(System.getenv("AZURE_OPENAI_ENDPOINT"))
.apiKey(System.getenv("AZURE_OPENAI_KEY"))
.modelName(TEXT_EMBEDDING_3_SMALL)
.build();1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
针对 Azure OpenAI 与 GitHub Models 的具体配置。
与配置 OpenAI 官方聊天模型 类似,你可以使用 isAzure() 和 isGitHubModels() 方法,将 OpenAiOfficialEmbeddingModel 配置为 Azure OpenAI 与 GitHub Models。
Azure OpenAI
java
EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.baseUrl(System.getenv("AZURE_OPENAI_ENDPOINT"))
.apiKey(System.getenv("AZURE_OPENAI_KEY"))
.modelName(TEXT_EMBEDDING_3_SMALL)
.isAzure(true) // Not necessary if the base URL ends with `openai.azure.com`
.build();1
2
3
4
5
6
2
3
4
5
6
你也可以使用"无密码"认证,如 OpenAI 官方聊天模型 文档所述。
GitHub Models
java
EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.modelName(TEXT_EMBEDDING_3_SMALL)
.isGitHubModels(true)
.build();1
2
3
4
2
3
4
使用模型
模型配置好后,即可用它创建嵌入:
java
Response<Embedding> response = model.embed("Please embed this sentence.");1