Skip to main content

Universal LLM client for production - works with Claude, GPT-4, Gemini, Llama, and any LLM. Built-in integrations with Openclaw, LangChain, and LangGraph.

Project description

Socratic Nexus

A universal LLM client library providing unified access to multiple AI providers with a consistent interface.

Tests License Python 3.9+

Features

  • Multi-Provider Support: Works with Anthropic (Claude), OpenAI (GPT-4), Google (Gemini), Ollama, and HuggingFace
  • Unified Interface: Consistent API across all providers
  • Async/Sync Support: Full async/await support with optional synchronous API
  • Production Ready: 70%+ test coverage, comprehensive error handling
  • Token Tracking: Built-in token usage monitoring and cost estimation
  • Caching: Intelligent response caching with optional Redis support
  • Type Safe: Full type hints with mypy support
  • No Lock-in: Easy to switch between providers without code changes

Installation

Basic Installation

pip install socratic-nexus

With Specific Providers

# Claude/Anthropic
pip install socratic-nexus[anthropic]

# OpenAI
pip install socratic-nexus[openai]

# Google Gemini
pip install socratic-nexus[google]

# Ollama (local LLMs)
pip install socratic-nexus[ollama]

# All providers
pip install socratic-nexus[all]

With Integrations

# LangChain support
pip install socratic-nexus[langchain]

# Everything
pip install socratic-nexus[full]

Quick Start

Using Claude (Anthropic)

from socratic_nexus.clients import ClaudeClient

# Initialize with API key
client = ClaudeClient(api_key="sk-ant-...")

# Generate a response
response = client.generate_response(
    "Explain quantum computing in simple terms"
)
print(response)

# Generate code
code = client.generate_code(
    "Create a Python function to calculate fibonacci numbers"
)
print(code)

# Extract insights
insights = client.extract_insights(
    "Why is photosynthesis important for Earth's ecosystem?",
    project_name="biology_study"
)
print(insights)

Using OpenAI (GPT-4)

from socratic_nexus.clients import OpenAIClient

client = OpenAIClient(api_key="sk-...")

response = client.generate_response(
    "What are the key principles of machine learning?"
)
print(response)

Using Google Gemini

from socratic_nexus.clients import GoogleClient

client = GoogleClient(api_key="...")

response = client.generate_response(
    "Explain blockchain technology"
)
print(response)

Using Ollama (Local Models)

from socratic_nexus.clients import OllamaClient

# Ollama runs locally, no API key needed
client = OllamaClient(base_url="http://localhost:11434")

response = client.generate_response(
    "What is the capital of France?"
)
print(response)

Async Usage

import asyncio
from socratic_nexus.clients import ClaudeClient

async def main():
    client = ClaudeClient(api_key="sk-ant-...")

    response = await client.generate_response_async(
        "Explain the theory of relativity"
    )
    print(response)

asyncio.run(main())

Core Clients

ClaudeClient

Anthropic's Claude model with specialized methods:

  • generate_response() - General text generation
  • generate_code() - Code generation
  • extract_insights() - Extract key insights
  • generate_documentation() - Create documentation
  • generate_business_plan() - Business planning
  • generate_curriculum() - Learning curriculum design
  • generate_research_protocol() - Research methodology
  • And 10+ more specialized generators

OpenAIClient

OpenAI's GPT models with:

  • Cost calculation based on token usage
  • Support for GPT-4, GPT-4 Turbo, GPT-3.5
  • Configurable temperature and parameters

GoogleClient

Google's Gemini models with:

  • Multi-modal support
  • Advanced safety settings
  • Model variant selection (pro, pro-vision)

OllamaClient

Local LLM support for:

  • Running models locally without API keys
  • Custom model selection
  • Development and testing without cloud costs

Architecture

Socratic-nexus follows a layered architecture:

Application Code
       ↓
   Client Layer (ClaudeClient, OpenAIClient, etc.)
       ↓
   Provider Abstraction Layer
       ↓
   Provider-Specific Implementations
       ↓
   External LLM APIs

Each client:

  • Handles provider-specific authentication
  • Normalizes request/response formats
  • Manages async/sync variants
  • Tracks token usage and costs
  • Implements caching and retry logic

See ARCHITECTURE.md for detailed architecture documentation.

API Reference

Base Client Interface

All clients implement these core methods:

# Generate a response to a prompt
response = client.generate_response(
    prompt: str,
    max_tokens: int = 1024,
    temperature: float = 0.7
) -> str

# Generate code from specifications
code = client.generate_code(
    specification: str,
    language: str = "python"
) -> str

# Extract key insights from text
insights = client.extract_insights(
    text: str,
    project: Optional[ProjectContext] = None
) -> str

# Async variants
response = await client.generate_response_async(...)
code = await client.generate_code_async(...)
insights = await client.extract_insights_async(...)

Token Usage Tracking

Each response includes token usage information:

from socratic_nexus.clients import ClaudeClient

client = ClaudeClient(api_key="sk-ant-...")
response = client.generate_response("Your prompt here")

# Token information available in response metadata
print(f"Input tokens: {response.metadata.input_tokens}")
print(f"Output tokens: {response.metadata.output_tokens}")
print(f"Estimated cost: ${response.metadata.cost_usd}")

See docs/API_REFERENCE.md for complete API documentation.

Configuration

Environment Variables

Set provider API keys via environment variables:

export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
export GOOGLE_API_KEY="..."

Then initialize clients without explicit keys:

from socratic_nexus.clients import ClaudeClient

# Reads from ANTHROPIC_API_KEY
client = ClaudeClient()

Client Configuration

from socratic_nexus.clients import ClaudeClient

client = ClaudeClient(
    api_key="sk-ant-...",
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    temperature=0.7,
    timeout=30
)

Error Handling

from socratic_nexus.clients import ClaudeClient
from anthropic import APIError

try:
    client = ClaudeClient(api_key="invalid-key")
    response = client.generate_response("Test prompt")
except APIError as e:
    print(f"API Error: {e}")
except Exception as e:
    print(f"Unexpected error: {e}")

Testing

Run the test suite:

pytest tests/

With coverage:

pytest --cov=socratic_nexus tests/

Run specific test categories:

# Unit tests only
pytest -m unit

# Integration tests (requires API keys)
pytest -m integration

Performance

  • Response Caching: Configurable in-memory caching
  • Async Support: Non-blocking API calls for high concurrency
  • Connection Pooling: Efficient HTTP connection management
  • Retry Logic: Automatic retry with exponential backoff

Typical response times (with caching disabled):

  • Claude: 1-5s per request
  • GPT-4: 1-3s per request
  • Gemini: 500ms-2s per request
  • Ollama (local): 100ms-1s per request

Security

  • API Key Protection: Never logged or cached
  • HTTPS Only: All communication encrypted
  • No Request Logging: Sensitive data not persisted
  • Input Validation: All requests validated before sending

For security issues, please see SECURITY.md.

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Ensure all tests pass and coverage remains above 70%
  5. Submit a pull request

See CONTRIBUTING.md for detailed guidelines.

License

MIT License - See LICENSE file for details.

Support

Roadmap

  • Support for additional providers (Cohere, Together AI, etc.)
  • Function calling for all providers
  • Streaming response support
  • Advanced RAG integration
  • Cost optimization features
  • Rate limiting and quota management

Changelog

See CHANGELOG.md for release notes and version history.

Related Projects


Made with ❤️ for the AI community

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

socratic_nexus-0.4.1.tar.gz (143.9 kB view details)

Uploaded Source

Built Distribution

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

socratic_nexus-0.4.1-py3-none-any.whl (59.1 kB view details)

Uploaded Python 3

File details

Details for the file socratic_nexus-0.4.1.tar.gz.

File metadata

  • Download URL: socratic_nexus-0.4.1.tar.gz
  • Upload date:
  • Size: 143.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for socratic_nexus-0.4.1.tar.gz
Algorithm Hash digest
SHA256 8e21847fc5fab97dccc6017c988cef06fbe9ac7549845a4b702453e84d00a7a2
MD5 af79590b1ffd66b7cce33c6397665a05
BLAKE2b-256 79d5bd3624acecbb896c393b53ba83b33b85122f7532dfdbf7ea43aae8115d07

See more details on using hashes here.

File details

Details for the file socratic_nexus-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: socratic_nexus-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 59.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for socratic_nexus-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6196574179f49e1b7684e4ea4449a6380dc6b57881809164eb610e9b575d9ebe
MD5 0b6fca99bfb8c877443fa11164f14b4f
BLAKE2b-256 33b276352a96083269491ab9b78d6071aba36ca1537909d68add4e1c3cac29ed

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