Skip to main content

Dialect

Enum Dialect 

Source
pub enum Dialect {
    Glm,
    Hermes,
    Kimi,
    Xml,
    Anthropic,
    Deepseek,
    Harmony,
    Qwen3,
    Gemini,
    Gemma,
    Minimax,
}
Expand description

An owned tool-calling dialect.

Mirrors omp’s Dialect union (@oh-my-pi/pi-catalog/identity). The variant selects the text grammar used to render and parse in-band tool calls.

Variants§

§

Glm

GLM (ChatGLM) XML dialect.

§

Hermes

Hermes / Qwen JSON-fence dialect.

§

Kimi

Kimi (Moonshot) section dialect.

§

Xml

Generic XML dialect — the fallback (<invoke>/<parameter>).

§

Anthropic

Anthropic <function_calls> / <antml:invoke> dialect.

§

Deepseek

DeepSeek DSML dialect.

§

Harmony

OpenAI / GPT-OSS Harmony control-token dialect.

§

Qwen3

Qwen3 dialect.

§

Gemini

Google Gemini <start_of_turn> dialect.

§

Gemma

Google Gemma <|turn> dialect.

§

Minimax

MiniMax <minimax:tool_call> dialect.

Implementations§

Source§

impl Dialect

Source

pub fn from_name(name: &str) -> Option<Self>

Parse a dialect from its kebab/short name (e.g. "xml", "qwen3").

Returns None for unknown names. Accepts the canonical lower-case identifier omp uses on the wire and in PI_DIALECT.

Source

pub fn as_str(self) -> &'static str

The canonical wire identifier (matches omp’s Dialect string values).

Source

pub fn preferred_for_model(model_id: &str) -> Self

Resolve the dialect a model id prefers, by family token.

Mirrors omp’s preferredDialect(modelId). The match is a substring scan over the lower-cased model id; unknown families fall back to FALLBACK_DIALECT.

Source

pub fn prompt(self) -> String

The dialect’s format-guide prompt fragment (injected after the catalog).

Source

pub fn render_tool_calls(self, calls: &[ToolCall], tools: &[Tool]) -> String

Render a batch of (parallel) tool calls as one text block.

Source

pub fn render_tool_results(self, results: &[RenderedToolResult]) -> String

Render a run of tool results as one text block.

Source

pub fn render_thinking(self, text: &str) -> String

Render a thinking/reasoning block in the dialect’s envelope.

Source

pub fn parse(self, text: &str, tools: &[Tool]) -> Vec<ScanSegment>

Parse completed model text into segments (text / thinking / tool calls).

This is the batch entry point. Streaming (incremental) parsing lands in a follow-up; the agent loop will call this on the accumulated assistant text once the turn completes.

Source

pub fn parse_assistant_message( self, message: &AssistantMessage, tools: &[Tool], ) -> AssistantMessage

Re-materialize in-band tool-call text on an assistant message as native ToolCall content blocks, leaving any prose as text blocks.

Returns the rewritten message. When the text contains no tool calls the message is returned unchanged.

Trait Implementations§

Source§

impl Clone for Dialect

Source§

fn clone(&self) -> Dialect

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Dialect

Source§

impl Debug for Dialect

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Dialect

Source§

impl Hash for Dialect

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Dialect

Source§

fn eq(&self, other: &Dialect) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Dialect

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsOut<T> for T
where T: Copy,

Source§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more