Skip to main content

A flexible LLM orchestration framework with tool calling capabilities via MCP protocol

Project description

Jiki

Jiki is a flexible LLM orchestration framework with built-in tool calling capabilities.

Overview

Jiki provides a clean interface for building AI assistants that can use tools to solve problems. It orchestrates the interaction between language models and external tools using the MCP (Model Context Protocol).

Features

  • Seamless integration with LiteLLM for support of multiple LLM providers
  • Tool calling through FastMCP infrastructure (manual config or auto-discovery)
  • Flexible MCP client with multiple transport options (stdio, SSE)
  • Structured conversation logging for training data generation
  • Simple CLI interface for interactive use
  • XML-based tool call format for clear model interaction

Quick Start

uv add jiki
from jiki import create_jiki

# Create a pre‑configured orchestrator with sensible defaults
# Option 1: Provide tool schemas manually
# orchestrator = create_jiki(
#     model="anthropic/claude-3-7-sonnet-latest",
#     # Path to a JSON file that describes your tools (see below)
#     tools="tools.json", 
#     mcp_mode="stdio", # Use stdio for a local FastMCP server script
#     mcp_script_path="path/to/your/server.py" 
# )

# Option 2: Auto-discover tools from a running FastMCP server
orchestrator = create_jiki(
    model="anthropic/claude-3-7-sonnet-latest",
    auto_discover_tools=True,  # Discover tools from the server
    mcp_mode="stdio",          # Transport mode ('stdio' or 'sse')
    mcp_script_path="servers/calculator_server.py" # Path to server script (or URL for SSE)
)

# Process a user query (synchronous helper available)
result = orchestrator.process("What is 2 + 2?")
print(result)

CLI Usage

uv run examples/simple_multiturn_cli.py --tools tools.json

Detailed Responses & Tracing

Jiki can return a rich DetailedResponse object that includes the assistant's answer and all tool calls / raw traces generated during the turn. This is useful for debugging, analytics, or offline reinforcement‑learning pipelines.

# Get a structured response with trace metadata
detailed = orchestrator.process_detailed("What is the capital of France?")

print(detailed.result)      # The assistant's final answer
print(detailed.tool_calls)  # List[ToolCall] detailing every tool invocation
print(detailed.traces)      # Raw trace dictionaries for deeper inspection

# Persist traces from the current session
orchestrator.export_traces("interaction_traces/session.jsonl")

Creating Custom Tools

Tools are defined in JSON format and implemented using FastMCP:

[
  {
    "tool_name": "add",
    "description": "Add two numbers",
  "arguments": {
    "a": {"type": "integer", "description": "First number"},
    "b": {"type": "integer", "description": "Second number"}
  }
}

Server implementation (servers/calculator_server.py):

from fastmcp import FastMCP

mcp = FastMCP("Calculator")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

if __name__ == "__main__":
    mcp.run()

Requirements

  • Python 3.11+
  • litellm >= 1.35.0 (or the latest)
  • fastmcp >= 2.1.1
  • mcp
  • tiktoken (optional – enables exact token counting)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jiki-0.0.8.tar.gz (22.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jiki-0.0.8-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file jiki-0.0.8.tar.gz.

File metadata

  • Download URL: jiki-0.0.8.tar.gz
  • Upload date:
  • Size: 22.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.9

File hashes

Hashes for jiki-0.0.8.tar.gz
Algorithm Hash digest
SHA256 a7100c96bce9be06da1516fa0c3dbb11c39c780ebf221ae354e8d46d3604445f
MD5 bab1c1c230d1d7e1dc3f3c05d8de89df
BLAKE2b-256 6a9d4793aa62d691bef19f89d5a9db77061ac4bc91696241d3c4bc0af3ae12fa

See more details on using hashes here.

File details

Details for the file jiki-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: jiki-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.9

File hashes

Hashes for jiki-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 1f58f27312f73c2037cb0f5786e74e8bc62e9e10c6e36e62e742fa959cb308bb
MD5 4e8e7bc49065fb923d9741ded1c552b2
BLAKE2b-256 e4c1a7222d684c8e7e26a970de85a284828aa24980fd2b03e64650115cce0181

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page