#AI Package

    The ai package provides message types and utilities for representing AI conversations and responses.

    #Core Types

    #Message

    Represents a message in the conversation with the AI model.

    ///|
    pub enum Message {
    User(String)
    System(String)
    Assistant(String, tool_calls~ : Array[ToolCall])
    Tool(String, tool_call_id~ : String)
    } derive(ToJson, Eq, Show)

    Variants:
    • User: A message from the user
    • System: System prompt/instructions
    • Assistant: Response from the AI, optionally with tool calls
    • Tool: Result from a tool execution

    #ToolCall

    Represents a tool/function call request from the AI.

    ///|
    pub struct ToolCall {
    id : String
    name : String
    arguments : String?
    } derive(ToJson, Eq, Show)

    #Usage

    Token usage statistics from the API.

    ///|
    pub struct Usage {
    input_tokens : Int
    output_tokens : Int
    total_tokens : Int
    cache_read_tokens : Int?
    } derive(Eq, Show)

    #Key APIs

    #Message Constructors

    pub fn user_message(content~ : String) -> Message
    pub fn system_message(content~ : String) -> Message
    pub fn assistant_message(content~ : String, tool_calls? : Array[ToolCall]) -> Message
    pub fn tool_message(content~ : String, tool_call_id~ : String) -> Message

    #Tool Call Constructor

    pub fn tool_call(id~ : String, name~ : String, arguments? : String) -> ToolCall

    #Usage Constructor

    pub fn usage(
    input_tokens~ : Int,
    output_tokens~ : Int,
    total_tokens? : Int,
    cache_read_tokens? : Int,
    ) -> Usage

    #OpenAI Conversion

    The package provides bidirectional conversion with OpenAI types:

    // Convert to OpenAI format
    pub fn Message::to_openai(Self) -> @openai.ChatCompletionMessageParam

    // Convert from OpenAI format
    pub fn Message::from_openai(@openai.ChatCompletionMessageParam) -> Self
    pub fn Message::from_openai_response(@openai.ChatCompletionMessage) -> Self

    // ToolCall conversion
    pub fn ToolCall::to_openai(Self) -> @openai.ChatCompletionMessageToolCall
    pub fn ToolCall::from_openai_tool_call(@openai.ChatCompletionMessageToolCall) -> Self

    // Usage conversion
    pub fn Usage::from_openai(@openai.CompletionUsage) -> Self
    pub fn Usage::to_openai(Self) -> @openai.CompletionUsage

    #Usage Example

    // Create messages for a conversation

    ///|
    let system = @ai.system_message(content="You are a helpful assistant.")

    ///|
    let user = @ai.user_message(content="What is 2+2?")

    ///|
    let assistant = @ai.assistant_message(content="2+2 equals 4.")

    // Create a tool call

    ///|
    let tc = @ai.tool_call(
    id="call_123",
    name="calculate",
    arguments=Some("{\"expression\": \"2+2\"}"),
    )

    // Create assistant message with tool calls

    ///|
    let assistant_with_tools = @ai.assistant_message(content="", tool_calls=[tc])

    // Create tool response

    ///|
    let tool_response = @ai.tool_message(tool_call_id="call_123", content="4")

    #Dependencies

    • openai: OpenAI API types for conversion

    Message

    pub enum Message {
    User(String)
    System(String)
    Assistant(String, tool_calls~ : Array[ToolCall])
    Tool(String, tool_call_id~ : String)
    } derive(Eq, ToJson,
    Debug
    )

    Message::content

    fn Message::content(self : Message) -> String

    Message::from_openai

    Convert an OpenAI ChatCompletionMessageParam to an @ai.Message.

    Message::from_openai_response

    Convert an OpenAI ChatCompletionMessage (response message) to an @ai.Message.

    Message::to_openai

    Convert an @ai.Message to an OpenAI ChatCompletionMessageParam.

    ToolCall

    pub struct ToolCall {
    id : String
    name : String
    arguments : String?
    } derive(Eq, ToJson,
    Debug
    )

    ToolCall::from_openai_tool_call

    Convert an OpenAI ChatCompletionMessageToolCall to an @ai.ToolCall.

    ToolCall::to_openai

    Convert an @ai.ToolCall to an OpenAI ChatCompletionMessageToolCall.

    Usage

    pub struct Usage {
    input_tokens : Int
    output_tokens : Int
    total_tokens : Int
    cache_read_tokens : Int?
    } derive(Eq,
    Debug
    )

    Usage::from_openai

    Convert an OpenAI CompletionUsage to an @ai.Usage.

    Usage::to_openai

    Convert an @ai.Usage to an OpenAI CompletionUsage.

    assistant_message

    fn assistant_message(content~ : String, tool_calls? : Array[ToolCall]) -> Message

    system_message

    fn system_message(content~ : String) -> Message

    tool_call

    fn tool_call(id~ : String, name~ : String, arguments? : String) -> ToolCall

    tool_message

    fn tool_message(content~ : String, tool_call_id~ : String) -> Message

    usage

    fn usage(input_tokens~ : Int, output_tokens~ : Int, total_tokens? : Int, cache_read_tokens? : Int) -> Usage

    user_message

    fn user_message(content~ : String) -> Message