Skip to content

Namespace clore::net::protocol

Summary

clore::net::protocol 命名空间提供了与 LLM 通信协议相关的一组核心工具函数。它主要承担三方面职责:解析响应(如 parse_responseparse_response_texttext_from_response)、构建请求(如 build_request_json)以及验证输出(如 validate_markdown_fragment_outputvalidate_json_output)。此外,还包含用于处理工具调用的辅助函数(parse_tool_argumentsappend_tool_outputs),这些函数共同支持从 LLM 响应中提取结构化数据、将工具执行结果回填到协议格式中,并对生成的内容进行合规性检查。

从架构角度看,该命名空间充当协议层与上层业务逻辑之间的适配器:它封装了消息的序列化格式(如 JSON)、工具调用约定的解析与构造,以及响应内容的校验逻辑。调用方通过该命名空间的接口,无需直接操作底层协议细节,即可完成与 LLM 的交互执行流程(“发送请求 → 接收响应 → 解析工具调用 → 执行工具 → 追加结果 → 构造下一轮请求”)。因此,clore::net::protocol 是实现 LLM 对话循环中协议处理的关键组件。

Functions

clore::net::protocol::append_tool_outputs

Declaration: network/protocol.cppm:469

Definition: network/protocol.cppm:540

Implementation: Module protocol

调用方使用 clore::net::protocol::append_tool_outputs 将工具执行结果附加到已有响应结构中。第一个 int 参数标识目标上下文(例如会话或请求句柄),const CompletionResponse & 提供来自 LLM 的完成响应,第二个 int 参数指示待追加的工具输出数据源(通过其他函数如 parse_tool_arguments 得到)。返回值 int 表示操作是否成功,零通常表示成功,非零表示错误代码。调用方需确保传入的 CompletionResponse 已包含 ToolCall 信息且工具输出已就绪,函数不会校验其有效性。

Usage Patterns

  • appending tool outputs to conversation history
  • constructing updated message list for LLM API

clore::net::protocol::build_request_json

Declaration: network/openai.cppm:457

Definition: network/openai.cppm:465

Implementation: Module openai

clore::net::protocol::build_request_json 基于传入的整数引用构造一个请求的 JSON 表示。调用者必须保证提供的 const int & 参数在调用期间保持有效且具有正确的语义含义(例如表示请求标识符或索引)。函数返回一个 int 值,用于指示操作的执行结果:非零值通常表示成功,零或负值表示错误。调用者应根据返回值执行相应的错误处理。

Usage Patterns

  • used to generate OpenAI-compatible request JSON
  • called before sending HTTP request to LLM API

clore::net::protocol::parse_response

Declaration: network/openai.cppm:459

Definition: network/openai.cppm:532

Implementation: Module openai

clore::net::protocol::parse_response 接受一个 std::string_view 参数,表示待解析的原始响应数据,并返回一个整数结果。该整数通常指示解析是否成功或携带某种状态信息,调用者应据此判断后续逻辑。

调用者负责在函数调用期间确保传入的 std::string_view 内容有效且未被修改。函数不会接管字符串的所有权,调用者必须维护数据的生存期直到调用结束。

Usage Patterns

  • Parse LLM API response JSON
  • Deserialize completion response

clore::net::protocol::parse_response_text

Declaration: network/protocol.cppm:475

Definition: network/protocol.cppm:588

Implementation: Module protocol

该函数从给定的 CompletionResponse 中解析出响应文本,并返回一个 int 值。调用者应确保传入的响应对象有效且包含可解析的文本内容;返回值指示解析结果或提供后续处理所需的标识。作为模板函数,parse_response_text 支持类型泛化,但其返回类型固定为 int,调用者无需显式指定模板参数。

Usage Patterns

  • extract and parse structured data from a LLM response
  • deserialize JSON from CompletionResponse

clore::net::protocol::parse_tool_arguments

Declaration: network/protocol.cppm:478

Definition: network/protocol.cppm:603

Implementation: Module protocol

clore::net::protocol::parse_tool_arguments 是一个模板函数,它接受一个 ToolCall 对象的常引用,解析其中包含的参数,并返回一个整数。返回的整数表示解析操作的成功或错误状态,调用者应根据其值判断后续处理是否应继续。该函数的模板参数 T 允许调用者指定参数期望的类型或解析策略,但具体的行为由协议上下文定义。

Usage Patterns

  • Convert tool call arguments to a typed object for further processing

clore::net::protocol::text_from_response

Declaration: network/protocol.cppm:467

Definition: network/protocol.cppm:524

Implementation: Module protocol

clore::net::protocol::text_from_response 函数接收一个 const CompletionResponse & 引用,返回一个 int。调用者调用此函数以从给定的 CompletionResponse 中提取文本,返回的整数值指示提取操作的结果。该函数是协议模块中处理响应文本的核心入口之一,调用者应根据返回的整数值判断操作是否成功,并继续后续处理(如通过 append_tool_outputsbuild_request_json 等进行下一步调用)。

Usage Patterns

  • used to obtain a plain text response from an LLM completion
  • called after ensuring the response is not a tool call or refusal

clore::net::protocol::validate_json_output

Declaration: network/protocol.cppm:463

Definition: network/protocol.cppm:484

Implementation: Module protocol

函数 clore::net::protocol::validate_json_output 负责验证调用者提供的 JSON 输出字符串。它接受一个 std::string_view 参数,该参数包含待验证的 JSON 文本,并返回一个 int 值,通常用于指示验证结果:返回零表示通过验证,非零值表示验证失败或存在特定错误。调用者应确保传入的字符串是合法的 JSON 格式,并在调用后检查返回值以判断输出是否符合预期。

Usage Patterns

  • Used to validate LLM output before further processing.

clore::net::protocol::validate_markdown_fragment_output

Declaration: network/protocol.cppm:465

Definition: network/protocol.cppm:493

Implementation: Module protocol

函数 clore::net::protocol::validate_markdown_fragment_output 负责验证一个 markdown 片段的有效性。调用者需传入一个 std::string_view 表示待校验的 markdown 片段,函数会检查其是否符合预期的格式或内容约束。

函数返回一个 int 类型的值,该值指示验证结果。调用方应依赖返回值判断输入是否通过验证,而非假设其语义细节(例如零表示成功,非零表示失败)。

Usage Patterns

  • validating LLM output before further processing
  • ensuring response matches expected markdown fragment format