diff --git a/INTENT.md b/INTENT.md new file mode 100644 index 0000000..7b57270 --- /dev/null +++ b/INTENT.md @@ -0,0 +1,95 @@ +# INTENT + +## Purpose + +This repository exists to provide a **provider-neutral interface for interacting with large language models (LLMs)** in Python. + +It ensures that applications can use LLM capabilities without being tightly coupled to any specific provider, API, or execution environment. + +--- + +## Primary Utility + +The repository provides a **unified adapter layer** that: + +* Abstracts over multiple LLM providers and execution modes +* Standardizes request, response, and configuration handling +* Enables interchangeable use of hosted APIs and local tooling (e.g. CLI-based models) +* Supports embeddings, token estimation, and related primitives +* Enables dynamic utility by cost optimizations + +It transforms heterogeneous LLM ecosystems into a **consistent, composable programming interface**. + +--- + +## Intended Users + +* Application developers integrating LLM capabilities into their systems +* Library and framework authors requiring provider-agnostic LLM primitives +* Automation systems (`atm`) orchestrating LLM-assisted workflows +* LLM agents (`agt`) operating across different model providers + +--- + +## Strategic Role in the System + +This repository acts as the **LLM abstraction layer** within the broader system: + +* It decouples **application logic from provider-specific implementations** +* It enables **runtime flexibility and provider switching without code changes** +* It supports architectures where LLM usage is **optional, replaceable, and testable** + +It allows higher-level systems to treat LLMs as **pluggable capabilities rather than fixed dependencies**. + +--- + +## Strategic Boundaries + +This repository is **not** intended to: + +* Provide application-level agent frameworks or workflows +* Define prompting strategies, routing policies, or domain-specific logic +* Manage secrets, credentials, or organizational access policies +* Own or implement LLM providers themselves + +Its responsibility is limited to **clean abstraction and integration of LLM capabilities**. + +--- + +## Design Principles + +* **Abstraction over providers** + Consumers depend on a stable adapter interface, not on vendor APIs + +* **Composability** + LLM functionality should be usable as a building block in larger systems + +* **Replaceability** + Providers and execution modes must be interchangeable without affecting consumers + +* **Deterministic integration boundaries** + Non-LLM logic must remain testable and independent of LLM variability + +* **Minimal opinionation** + The library provides primitives, not policies + +--- + +## Maturity Target + +A mature version of this repository should: + +* Provide a **stable, versioned core adapter contract** for LLM interaction +* Support a broad range of providers and execution environments +* Enable **seamless switching and fallback between providers** +* Offer consistent handling of **responses, errors, and usage metrics** +* Serve as the **default integration layer for LLM capabilities** across dependent systems + +--- + +## Stability Note + +Changes to this file represent a **deliberate shift in the abstraction boundaries or role** of this repository. + +Such changes should be rare, as they affect all downstream systems relying on provider-neutral LLM integration. + diff --git a/README.md b/README.md index 1d46b36..1ac1514 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # llm-connect -Pluggable LLM adapters for Python. Supports OpenRouter, Gemini, OpenAI, and -the Claude Code CLI out of the box, with a clean abstract interface for adding +Pluggable LLM adapters for Python and the commandline. Supports OpenRouter, Gemini, +OpenAI, and the Claude Code CLI out of the box, with a clean abstract interface for adding your own. ## Quick start @@ -31,8 +31,6 @@ pip install llm-connect |---|---|---| | `"openrouter"` | `OpenRouterAdapter` | OpenAI-compatible endpoint; supports all OpenRouter models | | `"gemini"` | `GeminiAdapter` | Google Generative Language REST API; supports free tier | -| `"openai"` | `OpenAIAdapter` | OpenAI chat completions endpoint | -| `"claude-code"` | `ClaudeCodeAdapter` | Shells out to the `claude --print` CLI; no API key needed | ```python from llm_connect import create_adapter