API Reference
LLMKit 公开 API 的完整参考文档。所有类位于 io.llmkit 或 io.llmkit.model 包下。
类
LlmKit
io.llmkit入口门面类,通过 Java ServiceLoader (SPI) 自动发现 classpath 上的提供商模块,提供创建客户端的静态工厂方法。
静态方法
| 方法 | 返回值 | 说明 |
|---|---|---|
| create(String apiKey) | LlmClient | 使用 API Key 创建默认客户端(使用第一个可用提供商) |
| builder(String providerName) | LlmClientBuilder | 为指定提供商创建构建器,可链式配置参数 |
| providers() | List<String> | 列出所有已注册的提供商名称 |
Java
// 快速创建 — 使用默认提供商 LlmClient client = LlmKit.create("sk-xxx"); // 指定提供商 + 完整配置 LlmClient client = LlmKit .builder(Providers.OPENAI) .apiKey("sk-xxx") .model("gpt-4o") .build(); // 查看可用提供商 List<String> names = LlmKit.providers(); // → ["openai", "anthropic", "deepseek", ...]
接口
LlmClient
io.llmkit核心客户端接口,实现 AutoCloseable。提供同步对话、流式对话和一次性对话三种调用方式。
方法
| 方法 | 返回值 | 说明 |
|---|---|---|
| chat(ChatRequest request) | ChatResponse | 同步对话补全,发送请求并返回完整响应 |
| chatStream(ChatRequest request, StreamListener listener) | void | 流式对话,通过 StreamListener 回调逐块接收响应 |
| chat(String message) | String | 一次性便捷方法,发送单条消息并直接返回文本内容 |
Java
// 一次性对话 String answer = client.chat("What is quantum computing?"); // 完整请求 ChatResponse response = client.chat(ChatRequest.builder() .messages(ChatMessage.user("Hello")) .build()); System.out.println(response.content());
接口
LlmClientBuilder
io.llmkit客户端构建器接口,通过 LlmKit.builder(name) 获取。支持链式调用配置客户端参数。
构建器方法
| 方法 | 参数类型 | 说明 |
|---|---|---|
| apiKey(String) | String | 设置 API 密钥(必填) |
| model(String) | String | 设置模型名称,默认使用提供商的默认模型 |
| baseUrl(String) | String | 覆盖默认 API 地址,可用于代理或本地模型(如 Ollama) |
| timeout(Duration) | Duration | 设置请求超时时间 |
| retry(RetryPolicy) | RetryPolicy | 设置重试策略,遇到 429 或 5xx 自动重试 |
| build() | LlmClient | 构建并返回 LlmClient 实例 |
Java
LlmClient client = LlmKit .builder(Providers.ANTHROPIC) .apiKey("sk-ant-xxx") .model("claude-sonnet-4-20250514") .baseUrl("https://api.anthropic.com") .timeout(Duration.ofSeconds(60)) .retry(RetryPolicy.defaults()) .build();
接口
StreamListener
io.llmkit流式响应回调接口,用于 chatStream() 方法中逐块接收模型的输出。
回调方法
| 方法 | 参数 | 说明 |
|---|---|---|
| onChunk(ChatChunk) | ChatChunk | 每收到一个流式数据块时调用 |
| onComplete(ChatResponse) | ChatResponse | 流式输出完成时调用,传入完整响应 |
| onError(Throwable) | Throwable | 发生错误时调用 |
Java
client.chatStream(request, new StreamListener() { @Override public void onChunk(ChatChunk chunk) { System.out.print(chunk.delta()); } @Override public void onComplete(ChatResponse response) { System.out.println("\nDone"); } @Override public void onError(Throwable e) { e.printStackTrace(); } });
类
RetryPolicy
io.llmkit重试策略配置,用于在遇到 HTTP 429(速率限制)或 5xx(服务端错误)时自动重试。采用指数退避算法。
字段
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| maxRetries | int | 3 | 最大重试次数 |
| initialDelayMs | long | 1000 | 首次重试前的等待时间(毫秒) |
| backoffMultiplier | double | 2.0 | 退避倍数,每次重试等待时间乘以此值 |
| maxDelayMs | int | 30000 | 最大等待时间上限(毫秒) |
静态方法
| 方法 | 说明 |
|---|---|
| builder() | 创建 Builder 实例 |
| defaults() | 返回默认重试策略(3 次重试,1 秒初始延迟,2 倍退避) |
Java
// 使用默认策略 RetryPolicy policy = RetryPolicy.defaults(); // 自定义策略 RetryPolicy policy = RetryPolicy.builder() .maxRetries(5) .initialDelayMs(2000) .backoffMultiplier(2.5) .maxDelayMs(60000) .build();
类
Providers
io.llmkit内置提供商名称常量,用于 LlmKit.builder(name) 调用时避免硬编码字符串。
常量
| 常量 | 值 | 提供商 |
|---|---|---|
| Providers.OPENAI | "openai" | OpenAI |
| Providers.ANTHROPIC | "anthropic" | Anthropic |
| Providers.DEEPSEEK | "deepseek" | DeepSeek |
| Providers.GLM | "glm" | 智谱 AI (GLM) |
| Providers.QWEN | "qwen" | 通义千问 (DashScope) |
| Providers.MINIMAX | "minimax" | MiniMax |
| Providers.KIMI | "kimi" | Moonshot AI (Kimi) |
类
ChatRequest
io.llmkit.model不可变的对话请求模型,通过 Builder 模式构建。包含对话消息、模型参数和工具定义。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| model | String | 模型名称,不设置时使用客户端默认模型 |
| messages | List<ChatMessage> | 对话消息列表,按顺序排列 |
| temperature | Double | 采样温度,0.0 ~ 2.0,值越高输出越随机 |
| maxTokens | Integer | 生成的最大 token 数量 |
| tools | List<ToolDefinition> | 可调用的工具/函数定义列表 |
| topP | Double | 核采样参数 (nucleus sampling) |
| seed | Integer | 随机种子,用于可复现的输出 |
| stop | List<String> | 停止序列列表,模型遇到这些字符串时停止生成 |
| logprobs | Boolean | 是否返回 token 的对数概率 |
| topLogprobs | Integer | 每个 token 返回的前 N 个对数概率 (0~20) |
| responseFormat | String | 响应格式设置,支持 text、json_object、json_schema |
工厂方法(responseFormat)
| 方法 | 说明 |
|---|---|
| jsonResponseFormat() | 设置响应格式为 JSON 对象模式 |
| textResponseFormat() | 设置响应格式为纯文本模式 |
| schemaResponseFormat(name, jsonSchema) | 设置响应格式为 JSON Schema 结构化输出 |
Java
ChatRequest request = ChatRequest.builder() .model("gpt-4o") .messages( ChatMessage.system("You are a helpful assistant"), ChatMessage.user("Explain quantum computing") ) .temperature(0.7) .maxTokens(1024) .responseFormat(ChatRequest.jsonResponseFormat()) .build();
类
ChatResponse
io.llmkit.model不可变的对话响应模型,包含一个或多个 Choice、Token 用量和模型信息。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 响应唯一标识 |
| choices | List<Choice> | 生成的回复选项列表 |
| usage | Usage | Token 用量统计 |
| model | String | 实际使用的模型名称 |
便捷方法
| 方法 | 返回值 | 说明 |
|---|---|---|
| content() | String | 获取第一个 Choice 的文本内容,无内容时返回 null |
Choice 嵌套类
| 字段 | 类型 | 说明 |
|---|---|---|
| index | int | 选项索引 |
| message | ChatMessage | 生成的消息(包含内容或工具调用) |
| finishReason | String | 结束原因:stop、length、tool_calls |
| logprobs | ChoiceLogprobs | Token 对数概率信息 |
类
ChatMessage
io.llmkit.model不可变的对话消息模型,每条消息包含角色、内容,以及可选的工具调用信息。
Role 枚举
| 值 | 说明 |
|---|---|
| SYSTEM | 系统指令,设定模型行为 |
| USER | 用户输入的消息 |
| ASSISTANT | 模型生成的回复 |
| TOOL | 工具执行结果,反馈给模型 |
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| role | Role | 消息角色 |
| content | String | 消息文本内容 |
| toolCalls | List<ToolCall> | 模型发起的工具调用列表(仅 ASSISTANT 角色) |
| toolCallId | String | 对应的工具调用 ID(仅 TOOL 角色) |
工厂方法
| 方法 | 说明 |
|---|---|
| system(String content) | 创建 SYSTEM 角色消息 |
| user(String content) | 创建 USER 角色消息 |
| assistant(String content) | 创建 ASSISTANT 角色消息 |
| toolResult(String toolCallId, String content) | 创建 TOOL 角色消息,包含工具调用 ID 和执行结果 |
Java
// 多轮对话 ChatRequest request = ChatRequest.builder() .messages( ChatMessage.system("You are a translator"), ChatMessage.user("Translate to French: Hello"), ChatMessage.assistant("Bonjour"), ChatMessage.user("Thank you") ) .build();
类
ChatChunk
io.llmkit.model不可变的流式响应数据块,在 StreamListener.onChunk() 回调中使用。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 响应流唯一标识 |
| choices | List<ChunkChoice> | 流式选项列表 |
便捷方法
| 方法 | 返回值 | 说明 |
|---|---|---|
| delta() | String | 获取第一个 Choice 的增量文本内容 |
ChunkChoice 嵌套类
| 字段 | 类型 | 说明 |
|---|---|---|
| index | int | 选项索引 |
| delta | ChatMessage | 增量消息内容 |
| finishReason | String | 结束原因,最后一个块为 stop/length/tool_calls |
类
ToolDefinition
io.llmkit.model工具/函数定义,描述模型可以调用的外部工具。通过 Builder 模式构建。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| name | String | 工具名称 |
| description | String | 工具功能描述,帮助模型决定何时调用 |
| parameters | String | JSON Schema 格式的参数定义 |
Java
ToolDefinition tool = ToolDefinition.builder() .name("get_weather") .description("Get current weather for a location") .parameters("{"type":"object"," + ""properties":{" + ""location":{"type":"string","description":"City name"}" + "}," + ""required":["location"]"}) .build();
类
ToolCall
io.llmkit.model模型发起的工具调用,包含在 ASSISTANT 角色的 ChatMessage 中。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 工具调用的唯一标识 |
| name | String | 调用的工具名称 |
| arguments | String | 模型生成的 JSON 格式调用参数 |
类
ToolResult
io.llmkit.model工具执行结果,用于将工具调用结果反馈给模型以继续对话。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| toolCallId | String | 对应的工具调用 ID |
| content | String | 工具执行结果内容 |
| isError | boolean | 是否为错误结果,默认 false |
Java
// 完整的 Tool Calling 流程 ChatResponse response = client.chat(request); if (response.content() == null) { ToolCall call = response.getChoices().get(0) .getMessage().getToolCalls().get(0); // 执行你的工具函数... String result = executeTool(call.getName(), call.getArguments()); // 将结果反馈给模型 ChatRequest followUp = ChatRequest.builder() .messages( response.getChoices().get(0).getMessage(), ChatMessage.toolResult(call.getId(), result) ) .build(); ChatResponse finalResp = client.chat(followUp); System.out.println(finalResp.content()); }
类
Usage
io.llmkit.modelToken 用量统计,包含在 ChatResponse 中。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| promptTokens | int | 输入 prompt 消耗的 token 数 |
| completionTokens | int | 生成回复消耗的 token 数 |
| totalTokens | int | 总消耗 token 数 |
类
ChoiceLogprobs
io.llmkit.modelToken 级别的对数概率信息,需在 ChatRequest 中设置 logprobs=true 开启。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
| content | List<TokenLogprob> | 每个生成 token 的对数概率信息 |
TokenLogprob 嵌套类
| 字段 | 类型 | 说明 |
|---|---|---|
| token | String | 生成的 token 文本 |
| logprob | double | 该 token 的对数概率 |
| topLogprobs | List<TopLogprob> | 前 N 个候选 token 及其概率 |
TopLogprob 嵌套类
| 字段 | 类型 | 说明 |
|---|---|---|
| token | String | 候选 token 文本 |
| logprob | double | 该候选 token 的对数概率 |