public class GeminiChatDialect extends AbstractChatDialect
此类实现了与 Google Gemini API 的集成,提供聊天补全功能。 主要职责包括:
Gemini API 与 OpenAI API 的主要差异:
| 构造器和说明 |
|---|
GeminiChatDialect() |
| 限定符和类型 | 方法和说明 |
|---|---|
org.noear.snack4.ONode |
buildAssistantToolCallMessageNode(ChatResponseDefault resp,
java.util.Map<java.lang.String,ToolCallBuilder> toolCallBuilders)
构建助理消息节点
|
java.lang.String |
buildRequestJson(ChatConfig config,
ChatOptions options,
java.util.List<ChatMessage> messages,
boolean isStream)
构建符合 Gemini API 规范的请求 JSON
主要处理逻辑:
构建 contents 数组,包含对话历史
处理 generationConfig 配置,特别是类型转换
类型转换说明:由于 YAML 配置文件读取的值都是字符串,
需要在此处进行类型转换以符合 Gemini API 的要求:
temperature 和 topP 转换为 Double 类型(范围 0-1 的小数)
thinkingBudget 转换为 Integer 类型(思考token预算)
thinkingConfig 中的 includeThoughts 转换为 Boolean 类型
|
org.noear.solon.net.http.HttpUtils |
createHttpUtils(ChatConfig config)
创建 http 工具
|
org.noear.solon.net.http.HttpUtils |
createHttpUtils(ChatConfig config,
boolean isStream)
创建 http 工具
|
static GeminiChatDialect |
getInstance() |
boolean |
matched(ChatConfig config)
匹配检测
|
java.util.List<AssistantMessage> |
parseAssistantMessage(ChatResponseDefault resp,
org.noear.snack4.ONode oMessage)
分析工具调用
|
boolean |
parseResponseJson(ChatConfig config,
ChatResponseDefault resp,
java.lang.String json)
分析响应数据
|
buildAssistantMessageByToolMessages, buildAssistantMessageNodeDo, buildChatMessageNode, buildReqToolsNode, buildReqToolsNodeDo, buildSystemMessageNodeDo, buildToolMessageNodeDo, buildUserMessageNodeDo, hasNestedJsonBlock, parseAssistantMessageContent, parseToolCall, parseToolCallsclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitisDefaultpublic static GeminiChatDialect getInstance()
public boolean matched(ChatConfig config)
config - 聊天配置public org.noear.solon.net.http.HttpUtils createHttpUtils(ChatConfig config)
ChatDialectcreateHttpUtils 在接口中 ChatDialectcreateHttpUtils 在类中 AbstractChatDialectconfig - 聊天配置public org.noear.solon.net.http.HttpUtils createHttpUtils(ChatConfig config, boolean isStream)
ChatDialectconfig - 聊天配置isStream - 是否流式获取public boolean parseResponseJson(ChatConfig config, ChatResponseDefault resp, java.lang.String json)
ChatDialectconfig - 聊天配置resp - 响应体json - 响应数据public java.lang.String buildRequestJson(ChatConfig config, ChatOptions options, java.util.List<ChatMessage> messages, boolean isStream)
主要处理逻辑:
类型转换说明:由于 YAML 配置文件读取的值都是字符串, 需要在此处进行类型转换以符合 Gemini API 的要求:
buildRequestJson 在接口中 ChatDialectbuildRequestJson 在类中 AbstractChatDialectconfig - 聊天配置options - 聊天选项messages - 对话消息列表isStream - 是否使用流式模式public org.noear.snack4.ONode buildAssistantToolCallMessageNode(ChatResponseDefault resp, java.util.Map<java.lang.String,ToolCallBuilder> toolCallBuilders)
ChatDialectbuildAssistantToolCallMessageNode 在接口中 ChatDialectbuildAssistantToolCallMessageNode 在类中 AbstractChatDialecttoolCallBuilders - 工具调用构建器集合public java.util.List<AssistantMessage> parseAssistantMessage(ChatResponseDefault resp, org.noear.snack4.ONode oMessage)
ChatDialectparseAssistantMessage 在接口中 ChatDialectparseAssistantMessage 在类中 AbstractChatDialectresp - 响应体oMessage - 消息节点