Observed since 21 Oct, 11:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
ai-interactor
Universal AI interaction library with session and tool support.
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.
session.pyTo 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 .
Defined in requirements.txt:
openaiaiohttptiktokenrichAfter 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 markdownUse /exit or /quit to end the session.
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)
Sessions are JSON files stored on disk.
You can:
interactor.summarize()To enable logging:
inter = Interactor(..., log_path="~/my_session.log")
Logs include:
Copyright (c) Wadih Khairallah. All rights reserved.
Licensed for use and modification under the MIT License.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
aiohttpEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | aiohttp | runtime |
openaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | openai | runtime |
richEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | rich | runtime |
tiktokenEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | tiktoken | runtime |
anthropicEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | anthropic | runtime |
requestsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | requests | runtime |
bdist_wheel · 34.43 KB · Python py3
sdist · 180.49 KB · Python source
Observed since 21 Oct, 11:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:284d4c851dbff79623a2aa77f5abbf937676ea50cbe2c072580445a3dae2e4e7