Skip to main content

Universal AI interaction library with session and tool support

Project description

Interactor

A modular AI interaction framework with streaming, tool calling, context history, session management, retry/backoff logic, multi-provider support, and optional real-time logging.

Built for testability, extensibility, and CLI or programmatic use.

Features

  • Supports OpenAI, Ollama, NVIDIA, Google (Gemini) out-of-the-box
  • Streamed output with markdown rendering
  • Tool calling with auto-registration from Python functions
  • Token-aware message cycling (to respect context limits)
  • Persistent sessions with metadata and CRUD via session.py
  • Optional per-instance logging of all interactions
  • Retry logic for rate-limiting and transient failures
  • CLI runner with interactive loop and safe shell command execution

Installation

To install directly from GitHub:

pip install git+https://github.com/woodyk/interactor.git#egg=interactor

Or clone locally and install for development:

git clone https://github.com/woodyk/interactor.git
cd interactor
pip install -e .

Requirements

Defined in requirements.txt:

  • openai
  • aiohttp
  • tiktoken
  • rich

Usage (CLI)

After installing:

interactor

Command-line options:

  • --model: Model in format provider:model (e.g., openai:gpt-4o)
  • --api-key: Optional override (default uses env var)
  • --base-url: Optional custom API base
  • --tools: Enable tool calling
  • --stream: Stream assistant replies
  • --markdown: Render streamed output as markdown

Use /exit or /quit to end the session.

Usage (Python)

from interactor import Interactor, Session

inter = Interactor(
    model="openai:gpt-4o",
    session_enabled=True,
    session_path="~/.interactor_sessions",
    log_path="~/interactor.log"
)

def say_hello(name: str) -> str:
    return f"Hello, {name}!"

inter.add_function(say_hello)

reply = inter.interact("Please greet Ada.")
print(reply)

Session Support

Sessions are JSON files stored on disk.

You can:

  • List and load sessions
  • Create branches from message midpoints
  • Search and update content
  • Automatically summarize a session with interactor.summarize()

Logging

To enable logging:

inter = Interactor(..., log_path="~/my_session.log")

Logs include:

  • User and assistant messages
  • Tool call arguments and results
  • Model switches, session transitions
  • Retry events and exceptions

License

Copyright (c) Wadih Khairallah. All rights reserved.

Licensed for use and modification under the MIT License.

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

ai_interactor-0.1.0.tar.gz (156.1 kB view details)

Uploaded Source

Built Distribution

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

ai_interactor-0.1.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file ai_interactor-0.1.0.tar.gz.

File metadata

  • Download URL: ai_interactor-0.1.0.tar.gz
  • Upload date:
  • Size: 156.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for ai_interactor-0.1.0.tar.gz
Algorithm Hash digest
SHA256 75fee8f63cc67a8067ff0ab52b0110dc4ab3a69f040db503a87951e9163f8a1a
MD5 b64c4376b1913691e5b1b1608765b989
BLAKE2b-256 05ab3157a706076bf09a52ff6e162361a577921ebda09ee49c3c3411fe765c06

See more details on using hashes here.

File details

Details for the file ai_interactor-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ai_interactor-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for ai_interactor-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d1029590d7304c39945002a2cb07503f4f6d9df64b68663605f302ec00d9471b
MD5 89f75d47b8ef7064534aa91e04e2bf62
BLAKE2b-256 db3ba0a4e23e9f5e94176d56f4ffec7d6b4f4ff689c178e87ba9966a9b19ff8b

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