35#include <unordered_set>
62 std::string
open =
"<think>";
97 const std::string& raw);
118 const std::string& tools_json);
137 ChatAdapter(std::string tier_name, std::string identity_prompt);
193 const std::string& content)
const = 0;
206 const std::string& result)
const;
217 const std::vector<std::string>& tool_jsons)
const;
229 const std::string& content,
230 const std::vector<ToolCall>& tool_calls)
const;
247 const std::string& content)
const;
257 const std::string& json_str)
const;
266 const std::string& json_str)
const;
286 const std::string& base_system,
287 bool has_vision)
const;
299 const std::vector<ContentPart>& parts)
const;
Concrete base class for chat format adapters (80% logic).
std::unordered_set< std::string > tool_prefixes_
Known tool prefixes.
std::optional< ToolCall > try_recover_json(const std::string &json_str) const
Attempt JSON recovery on malformed tool call string.
virtual std::string format_content_parts(const std::vector< ContentPart > &parts) const
Convert multimodal content parts to adapter-specific format.
virtual std::string format_system_with_vision(const std::string &base_system, bool has_vision) const
Format system prompt with optional vision context.
virtual std::string chat_format() const =0
Chat format identifier (e.g.
std::optional< ToolCall > parse_single_tool_call(const std::string &json_str) const
Parse a single JSON tool call string.
std::vector< ToolCall > parse_tagged_tool_calls(const std::string &content) const
Parse <tool_call>JSON</tool_call> tagged blocks.
virtual std::string format_tools(const std::vector< std::string > &tool_jsons) const
Format tool definitions for injection into system prompt.
bool is_response_complete(const std::string &content, const std::vector< ToolCall > &tool_calls) const
Check if response represents task completion.
std::string strip_think_blocks(const std::string &content) const
Strip this family's reasoning blocks from content (gh#108).
std::string identity_prompt_
Assembled identity prompt.
virtual ThinkMarkers thinking_markers() const
Parse tool calls from model output.
virtual Message format_tool_result(const ToolCall &tool_call, const std::string &result) const
Format a tool result as a user message.
std::string tier_name_
Identity tier name.
Message struct for conversation history.
Activate model on GPU (WARM → ACTIVE).
void coerce_string_typed_args(std::vector< ToolCall > &calls, const std::string &tools_json)
gh#90: coerce numeric scalars back to strings for string-typed tool parameters.
std::vector< ToolCall > recover_action_envelope_calls(const std::string &raw)
gh#88: recover tool calls a gemma model parroted as bare-JSON.
void apply_action_envelope_recovery(std::vector< ToolCall > &calls, const std::string &raw)
gh#88: substitute recovered bare-JSON calls when a reliable (PEG_GEMMA4 / gemma) parse produced none;...
@ tool_call
Render-derived (COMMON_GRAMMAR_TYPE_TOOL_CALLS, needs prefill)
A message in a conversation.
Parsed tool call result: cleaned content + extracted calls.
std::string cleaned_content
Content with tool calls removed.
std::vector< ToolCall > tool_calls
Extracted tool calls.
The reasoning-block delimiters a model family emits (gh#108).
std::string close
Closing delimiter.
std::string open
Opening delimiter.