Deduplicate and refocus documentation
Restructured README.md and AGENTS.md to eliminate duplication: README.md (user-focused): - Simplified to focus on project description and usage - Quick start guide with installation steps - API usage examples with curl commands - Open WebUI integration guide - Troubleshooting section - Deployment recommendations - Removed internal architectural details AGENTS.md (LLM agent instructions): - Retained detailed architectural decisions and rationale - FastAPI best practices and patterns - Development guidelines and code structure - Documentation references for frameworks - Testing strategy and coverage details - Updated test coverage: 78.95% (95 tests) - Common implementation patterns Changes: - README.md: Streamlined from 497 to 310 lines - AGENTS.md: Updated test coverage numbers - Clear separation: README for users, AGENTS for AI developers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -201,10 +201,11 @@ Agent Interface (lorem-tester, tatlock)
|
||||
- OpenAI-compatible error format
|
||||
- Error triggers in lorem-tester for testing
|
||||
- ✅ **Testing Infrastructure**:
|
||||
- 75 tests (78.95% coverage)
|
||||
- 95 tests (78.95% coverage)
|
||||
- Unit tests for all components
|
||||
- Integration tests for API endpoints
|
||||
- Streaming tests for SSE functionality
|
||||
- Main application and wrapper tests
|
||||
|
||||
## FastAPI Best Practices
|
||||
|
||||
@@ -402,12 +403,14 @@ app = create_application()
|
||||
- 🚧 Implement rate limiting for API endpoints (future)
|
||||
- 🚧 Add authentication/API keys (future)
|
||||
|
||||
### Testing (Current Coverage: 62%)
|
||||
### Testing (Current Coverage: 78.95%, 95 tests)
|
||||
- ✅ Integration tests for API endpoints
|
||||
- ✅ Streaming functionality with 20s timeout protection
|
||||
- ✅ Async test support with pytest-asyncio
|
||||
- ✅ Validate OpenAI API compatibility
|
||||
- ✅ Mock responses for all endpoints
|
||||
- ✅ Main application tests (CORS, exception handlers, lifespan)
|
||||
- ✅ Chat streaming wrapper tests
|
||||
- 🚧 Future: Mock Ollama responses when integrated
|
||||
|
||||
### Configuration
|
||||
|
||||
@@ -1,108 +1,47 @@
|
||||
# Tatlock - OpenAI-Compatible API with Responses API
|
||||
|
||||
A FastAPI-based service providing OpenAI-compatible API endpoints with full Responses API support, reasoning display, and streaming. Features a hybrid architecture with chat completions as a compatibility wrapper around the Responses API.
|
||||
A FastAPI-based service providing OpenAI-compatible API endpoints with full Responses API support, reasoning display, and streaming.
|
||||
|
||||
## Current Status
|
||||
|
||||
**✅ Production-ready testing API** with OpenAI Responses API format
|
||||
**✅ Open WebUI integration** with reasoning bubbles (`<think>` tags)
|
||||
**✅ Conversation history** with hybrid client/server approach
|
||||
**🚧 PydanticAI integration** prepared for future real LLM connection
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
### Hybrid API Design
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ Client (Open WebUI, etc.) │
|
||||
└────────┬────────────────────────────────┘
|
||||
│
|
||||
├──────────────────────────────────┐
|
||||
│ │
|
||||
v v
|
||||
┌────────────────────┐ ┌──────────────────────┐
|
||||
│ /v1/chat/ │ wrapper │ /v1/responses │
|
||||
│ completions ├─────────>│ (Primary API) │
|
||||
│ │ │ │
|
||||
│ • OpenAI compat │ │ • Reasoning items │
|
||||
│ • <think> tags │ │ • Function calls │
|
||||
│ • Legacy support │ │ • Message items │
|
||||
└────────────────────┘ └──────────┬───────────┘
|
||||
│
|
||||
v
|
||||
┌──────────────────────┐
|
||||
│ Agent Interface │
|
||||
│ │
|
||||
│ • lorem-tester │
|
||||
│ • tatlock (future) │
|
||||
└──────────────────────┘
|
||||
```
|
||||
|
||||
**Key Architectural Decisions:**
|
||||
- **Single Source of Truth**: Responses API handles all generation logic
|
||||
- **Chat Completions Wrapper**: Converts Responses output to Chat format with `<think>` tags
|
||||
- **Agent Interface**: Clean abstraction for multiple models (mock and real)
|
||||
- **Hybrid History**: Client sends full context, server optionally tracks conversations
|
||||
- ✅ **Production-ready testing API** with OpenAI Responses API format
|
||||
- ✅ **Open WebUI integration** with reasoning bubbles (`<think>` tags)
|
||||
- ✅ **Conversation history** with auto-generated IDs and context management
|
||||
- ✅ **Comprehensive testing** - 95 tests, 78.95% coverage
|
||||
- 🚧 **PydanticAI integration** prepared for future real LLM connection
|
||||
|
||||
## Features
|
||||
|
||||
### Core API
|
||||
- ✅ **Responses API** (`/v1/responses`) - Primary endpoint with structured output
|
||||
- Reasoning items (thinking/extended thinking)
|
||||
- Function call items (tool execution)
|
||||
- Message items (assistant responses)
|
||||
- Streaming and non-streaming modes
|
||||
- ✅ **Chat Completions API** (`/v1/chat/completions`) - Compatibility wrapper
|
||||
- Converts reasoning to `<think>` tags for Open WebUI
|
||||
- Maintains OpenAI-compatible format
|
||||
- Wraps Responses API (single source of truth)
|
||||
- ✅ **Models API** (`/v1/models`) - Lists available models
|
||||
### API Endpoints
|
||||
|
||||
### Advanced Features
|
||||
- ✅ **Conversation History Management**
|
||||
- Hybrid approach: client maintains state, server tracks optionally
|
||||
- Auto-generated conversation IDs from first message hash
|
||||
- Configurable max turns (default: 20)
|
||||
- Placeholder for future vector memory (Qdrant)
|
||||
- ✅ **Context Window Management**
|
||||
- Approximate token counting (~4 chars/token)
|
||||
- Context trimming to fit model limits
|
||||
- Token usage statistics
|
||||
- ✅ **Parameter Validation**
|
||||
- Temperature: 0.0-2.0
|
||||
- Reasoning effort: none, minimal, low, medium, high, xhigh
|
||||
- Max output tokens enforcement
|
||||
- Stop sequences (up to 4)
|
||||
- ✅ **Stop Sequence Detection**
|
||||
- Real-time detection during streaming
|
||||
- Stops generation immediately when encountered
|
||||
- ✅ **Max Tokens Enforcement**
|
||||
- Real-time token counting during streaming
|
||||
- Stops when limit reached
|
||||
- **Responses API** (`/v1/responses`) - OpenAI Responses API format with structured output
|
||||
- Reasoning items for displaying thinking process
|
||||
- Function call items for tool execution
|
||||
- Message items for assistant responses
|
||||
- Streaming and non-streaming support
|
||||
|
||||
- **Chat Completions** (`/v1/chat/completions`) - OpenAI Chat Completions compatibility
|
||||
- Automatic reasoning conversion to `<think>` tags for Open WebUI
|
||||
- Full OpenAI API compatibility
|
||||
- Streaming support
|
||||
|
||||
- **Models** (`/v1/models`) - List available models
|
||||
|
||||
### Advanced Capabilities
|
||||
|
||||
- **Conversation History**: Auto-generated IDs, configurable max turns (default: 20)
|
||||
- **Context Management**: Token counting, automatic trimming, usage statistics
|
||||
- **Parameter Validation**: Temperature (0.0-2.0), reasoning effort levels, max tokens, stop sequences
|
||||
- **Real-time Enforcement**: Stop sequence detection and max token limits during streaming
|
||||
|
||||
### Testing Models
|
||||
- ✅ **lorem-tester** - Full-featured mock agent
|
||||
- Realistic reasoning summaries
|
||||
- Random tool/function call generation
|
||||
|
||||
- **lorem-tester**: Full-featured mock agent with realistic behavior
|
||||
- Configurable reasoning effort levels
|
||||
- Random tool/function calls
|
||||
- Error triggers for testing (rate_limit, context_overflow)
|
||||
- Temperature variation
|
||||
- ✅ **tatlock** - Placeholder for real PydanticAI agent
|
||||
|
||||
### Open WebUI Integration
|
||||
- ✅ **Reasoning Display** - Thinking bubbles shown separately from responses
|
||||
- ✅ **Streaming Support** - Smooth word-by-word streaming
|
||||
- ✅ **Error Handling** - Graceful error display
|
||||
- ✅ **Model Selection** - Both models available in dropdown
|
||||
|
||||
## Components
|
||||
|
||||
- **FastAPI**: High-performance web framework
|
||||
- **SSE-Starlette**: Server-Sent Events for streaming
|
||||
- **Pydantic**: Type-safe request/response validation
|
||||
- **Agent Interface**: Abstraction for multiple model backends
|
||||
- **Conversation History**: Server-side tracking with hybrid approach
|
||||
- **Context Window**: Token management and trimming
|
||||
- **tatlock**: Placeholder for future PydanticAI agent
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -110,46 +49,24 @@ A FastAPI-based service providing OpenAI-compatible API endpoints with full Resp
|
||||
- No external dependencies for mock API
|
||||
- (Future: Network access for PydanticAI integration)
|
||||
|
||||
## Installation
|
||||
## Quick Start
|
||||
|
||||
### 1. Clone the repository
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
# Clone the repository
|
||||
git clone https://git.schweitz.net/jpmschweitzer/tatlock.git
|
||||
cd tatlock
|
||||
```
|
||||
|
||||
### 2. Create a virtual environment
|
||||
|
||||
```bash
|
||||
# Create virtual environment
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
||||
```
|
||||
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||||
|
||||
### 3. Install dependencies
|
||||
|
||||
```bash
|
||||
# Install dependencies
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 4. Configure environment (Optional)
|
||||
|
||||
Create a `.env` file for custom configuration:
|
||||
|
||||
```env
|
||||
# API Configuration
|
||||
API_HOST=0.0.0.0
|
||||
API_PORT=8000
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=INFO
|
||||
|
||||
# Future: Add real LLM configuration here
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Start the server
|
||||
### Run the Server
|
||||
|
||||
```bash
|
||||
uvicorn src.main:app --reload
|
||||
@@ -157,11 +74,11 @@ uvicorn src.main:app --reload
|
||||
|
||||
API available at `http://localhost:8000`
|
||||
|
||||
### API Endpoints
|
||||
## Usage Examples
|
||||
|
||||
#### Responses API (Primary)
|
||||
### Responses API
|
||||
|
||||
OpenAI Responses API format with structured output:
|
||||
Generate a response with reasoning:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/v1/responses \
|
||||
@@ -176,7 +93,6 @@ curl http://localhost:8000/v1/responses \
|
||||
"summary": "auto"
|
||||
},
|
||||
"max_output_tokens": 500,
|
||||
"stop": ["END"],
|
||||
"stream": false
|
||||
}'
|
||||
```
|
||||
@@ -192,22 +108,12 @@ curl http://localhost:8000/v1/responses \
|
||||
"output": [
|
||||
{
|
||||
"type": "reasoning",
|
||||
"id": "reasoning_xyz",
|
||||
"summary": [
|
||||
"Analyzing the user's request...",
|
||||
"Considering quantum mechanics principles..."
|
||||
]
|
||||
"summary": ["Analyzing the request...", "Considering quantum mechanics..."]
|
||||
},
|
||||
{
|
||||
"type": "message",
|
||||
"id": "msg_def456",
|
||||
"role": "assistant",
|
||||
"content": [
|
||||
{
|
||||
"type": "output_text",
|
||||
"text": "Quantum computing uses quantum mechanics..."
|
||||
}
|
||||
]
|
||||
"content": [{"type": "output_text", "text": "Quantum computing uses..."}]
|
||||
}
|
||||
],
|
||||
"usage": {
|
||||
@@ -219,9 +125,7 @@ curl http://localhost:8000/v1/responses \
|
||||
}
|
||||
```
|
||||
|
||||
#### Chat Completions (Compatibility)
|
||||
|
||||
OpenAI-compatible format with `<think>` tags:
|
||||
### Chat Completions (OpenAI-compatible)
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/v1/chat/completions \
|
||||
@@ -236,66 +140,31 @@ curl http://localhost:8000/v1/chat/completions \
|
||||
}'
|
||||
```
|
||||
|
||||
**Note**: Chat Completions automatically enables reasoning and converts it to `<think>` tags for Open WebUI compatibility.
|
||||
|
||||
#### List Models
|
||||
### List Models
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/v1/models
|
||||
```
|
||||
|
||||
Returns:
|
||||
```json
|
||||
{
|
||||
"object": "list",
|
||||
"data": [
|
||||
{
|
||||
"id": "lorem-tester",
|
||||
"object": "model",
|
||||
"created": 1733529600,
|
||||
"owned_by": "tatlock"
|
||||
},
|
||||
{
|
||||
"id": "tatlock",
|
||||
"object": "model",
|
||||
"created": 1733529600,
|
||||
"owned_by": "tatlock"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Conversation History
|
||||
|
||||
Optional conversation tracking via metadata:
|
||||
Optionally track conversations using metadata:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/v1/responses \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"model": "lorem-tester",
|
||||
"input": [
|
||||
{"role": "user", "content": "Hello"}
|
||||
],
|
||||
"metadata": {
|
||||
"conversation_id": "conv_abc123"
|
||||
}
|
||||
"input": [{"role": "user", "content": "Hello"}],
|
||||
"metadata": {"conversation_id": "conv_abc123"}
|
||||
}'
|
||||
```
|
||||
|
||||
**Hybrid Approach:**
|
||||
- Client MUST send full conversation history in `input` array (OpenAI compatible)
|
||||
- Server optionally tracks via `metadata.conversation_id` (for analytics, future vector memory)
|
||||
- Auto-generates conversation ID from first message hash if not provided
|
||||
|
||||
### Interactive Documentation
|
||||
|
||||
- **Swagger UI**: `http://localhost:8000/docs`
|
||||
- **ReDoc**: `http://localhost:8000/redoc`
|
||||
**Note**: Client must send full conversation history in `input` array (OpenAI compatible). Server optionally tracks via `metadata.conversation_id` for future features.
|
||||
|
||||
## Open WebUI Integration
|
||||
|
||||
### Docker Networking
|
||||
### Connection
|
||||
|
||||
If running Open WebUI in Docker and API on host:
|
||||
|
||||
@@ -306,71 +175,26 @@ http://172.17.0.1:8000/v1/chat/completions
|
||||
|
||||
### Reasoning Display
|
||||
|
||||
The Chat Completions wrapper automatically:
|
||||
The Chat Completions endpoint automatically:
|
||||
1. Enables reasoning generation
|
||||
2. Converts reasoning items to `<think>` tags
|
||||
3. Streams thinking before the actual response
|
||||
2. Converts reasoning to `<think>` tags
|
||||
3. Streams thinking before the response
|
||||
|
||||
Open WebUI displays this as:
|
||||
- **Thought bubble** showing reasoning steps
|
||||
- **Main response** showing the actual answer
|
||||
Open WebUI displays this as thought bubbles separate from the main response.
|
||||
|
||||
### Testing Error Handling
|
||||
|
||||
Lorem-tester supports error triggers:
|
||||
- **"trigger_rate_limit"** - Simulates rate limit error
|
||||
- **"trigger_context_overflow"** - Simulates context length error
|
||||
Use special triggers in user messages:
|
||||
- `"trigger_rate_limit"` - Simulates rate limit error
|
||||
- `"trigger_context_overflow"` - Simulates context length error
|
||||
|
||||
## Development
|
||||
## API Documentation
|
||||
|
||||
### Project Structure
|
||||
Interactive documentation available at:
|
||||
- **Swagger UI**: `http://localhost:8000/docs`
|
||||
- **ReDoc**: `http://localhost:8000/redoc`
|
||||
|
||||
Following FastAPI best practices with domain-based organization:
|
||||
|
||||
```
|
||||
tatlock/
|
||||
├── src/
|
||||
│ ├── agents/ # Agent interface and implementations
|
||||
│ │ ├── base.py # Abstract AgentInterface
|
||||
│ │ ├── lorem_tester.py # Full-featured mock agent
|
||||
│ │ ├── tatlock.py # Placeholder for real agent
|
||||
│ │ └── registry.py # Model registry
|
||||
│ ├── responses/ # Responses API domain (PRIMARY)
|
||||
│ │ ├── router.py # POST /v1/responses
|
||||
│ │ ├── schemas.py # Request/response models
|
||||
│ │ ├── service.py # Response generation logic
|
||||
│ │ ├── streaming.py # SSE streaming coordinator
|
||||
│ │ ├── history.py # Conversation history management
|
||||
│ │ └── context.py # Context window management
|
||||
│ ├── chat/ # Chat Completions domain (WRAPPER)
|
||||
│ │ ├── router.py # POST /v1/chat/completions
|
||||
│ │ ├── schemas.py # Chat request/response models
|
||||
│ │ ├── service.py # Wraps Responses API
|
||||
│ │ └── constants.py # Chat constants
|
||||
│ ├── models/ # Models listing domain
|
||||
│ │ ├── router.py # GET /v1/models
|
||||
│ │ ├── schemas.py # Model schemas
|
||||
│ │ └── service.py # Model registry access
|
||||
│ ├── core/ # Shared utilities
|
||||
│ │ ├── config.py # Configuration (BaseSettings)
|
||||
│ │ ├── models.py # Custom Pydantic base
|
||||
│ │ ├── exceptions.py # Custom exceptions
|
||||
│ │ └── router.py # Health check endpoints
|
||||
│ └── main.py # Application factory
|
||||
├── tests/ # Comprehensive test suite
|
||||
│ ├── agents/ # Agent tests
|
||||
│ ├── responses/ # Responses API tests
|
||||
│ ├── chat/ # Chat completions tests
|
||||
│ ├── models/ # Models API tests
|
||||
│ └── core/ # Core tests
|
||||
├── requirements.txt # Dependencies (pinned)
|
||||
├── .env # Environment variables
|
||||
├── AGENTS.md # Agent documentation
|
||||
├── CLEANUP_TODO.md # Architecture notes
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
### Testing
|
||||
## Testing
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
@@ -379,42 +203,9 @@ pytest
|
||||
# Run with coverage
|
||||
pytest --cov=src --cov-report=term-missing
|
||||
|
||||
# Current coverage: 78.95% (75 tests passing)
|
||||
# Current: 95 tests, 78.95% coverage
|
||||
```
|
||||
|
||||
**Test Organization:**
|
||||
- Unit tests for all components
|
||||
- Integration tests for API endpoints
|
||||
- Streaming tests for SSE functionality
|
||||
- Error handling tests
|
||||
- Advanced features tests (stop sequences, max tokens, validation)
|
||||
|
||||
### Code Style
|
||||
|
||||
- **Async-first**: All I/O operations use async/await
|
||||
- **Type hints**: All functions fully typed
|
||||
- **Pydantic validation**: All request/response validation
|
||||
- **Domain separation**: Clear boundaries between components
|
||||
- **Single responsibility**: Each module has one clear purpose
|
||||
|
||||
## Security
|
||||
|
||||
### Version Locking
|
||||
|
||||
Minor version locking (`>=X.Y,<X.(Y+1)`) for security:
|
||||
- Allows patch updates
|
||||
- Blocks potentially breaking minor updates
|
||||
- All dependencies checked for CVEs (2025-12-06)
|
||||
|
||||
### Best Practices
|
||||
|
||||
1. Never commit `.env` files
|
||||
2. Use environment variables for sensitive config
|
||||
3. Keep dependencies updated monthly
|
||||
4. Validate all inputs with Pydantic
|
||||
5. Use HTTPS in production
|
||||
6. Implement rate limiting
|
||||
|
||||
## Deployment
|
||||
|
||||
### Production Server
|
||||
@@ -424,51 +215,69 @@ Minor version locking (`>=X.Y,<X.(Y+1)`) for security:
|
||||
uvicorn src.main:app --host 0.0.0.0 --port 8000 --workers 4
|
||||
```
|
||||
|
||||
### Considerations
|
||||
### Recommendations
|
||||
|
||||
- Use reverse proxy (nginx/caddy) for HTTPS
|
||||
- Enable rate limiting (SlowAPI or similar)
|
||||
- Enable rate limiting
|
||||
- Set up monitoring and logging
|
||||
- Configure resource limits
|
||||
- Use process manager (systemd/supervisor)
|
||||
|
||||
## Configuration
|
||||
|
||||
Create a `.env` file for custom configuration:
|
||||
|
||||
```env
|
||||
# API Configuration
|
||||
API_HOST=0.0.0.0
|
||||
API_PORT=8000
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=INFO
|
||||
|
||||
# CORS (default: allow all)
|
||||
CORS_ORIGINS=["*"]
|
||||
|
||||
# Future: LLM configuration
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Streaming not working:**
|
||||
### Streaming not working
|
||||
- Verify SSE-Starlette is installed
|
||||
- Check client supports Server-Sent Events
|
||||
- Test with: `pytest tests/responses/ -k streaming`
|
||||
|
||||
**Open WebUI can't connect:**
|
||||
### Open WebUI can't connect
|
||||
- Use Docker bridge gateway IP: `172.17.0.1:8000`
|
||||
- Check firewall settings
|
||||
- Verify server is running on `0.0.0.0`
|
||||
|
||||
**Tests failing:**
|
||||
- Install test dependencies: `pip install -r requirements-dev.txt`
|
||||
- Activate virtual environment
|
||||
- Run with verbose: `pytest -v`
|
||||
|
||||
**Reasoning not showing:**
|
||||
### Reasoning not showing
|
||||
- Ensure using Chat Completions endpoint (auto-enables reasoning)
|
||||
- Or manually enable in Responses API: `"reasoning": {"effort": "medium", "summary": "auto"}`
|
||||
- Check Open WebUI version supports `<think>` tags
|
||||
|
||||
## Future Roadmap
|
||||
## Project Structure
|
||||
|
||||
### Short-term
|
||||
- [ ] Connect tatlock model to real PydanticAI agent
|
||||
- [ ] Implement vector memory (Qdrant integration)
|
||||
- [ ] Add authentication/API keys
|
||||
- [ ] Rate limiting middleware
|
||||
```
|
||||
tatlock/
|
||||
├── src/
|
||||
│ ├── agents/ # Agent interface and implementations
|
||||
│ ├── responses/ # Responses API (primary endpoint)
|
||||
│ ├── chat/ # Chat Completions wrapper
|
||||
│ ├── models/ # Models listing
|
||||
│ ├── core/ # Shared utilities and config
|
||||
│ └── main.py # Application entry point
|
||||
├── tests/ # Comprehensive test suite
|
||||
├── AGENTS.md # LLM agent development guidelines
|
||||
├── CHANGELOG.md # Version history
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
### Long-term
|
||||
- [ ] Multi-model support (OpenAI, Anthropic, etc.)
|
||||
- [ ] Advanced conversation memory
|
||||
- [ ] Tool/function calling integration
|
||||
- [ ] Usage tracking and analytics
|
||||
## Development
|
||||
|
||||
For LLM agent development guidelines and architectural decisions, see [AGENTS.md](AGENTS.md).
|
||||
|
||||
## Contributing
|
||||
|
||||
@@ -480,17 +289,21 @@ uvicorn src.main:app --host 0.0.0.0 --port 8000 --workers 4
|
||||
|
||||
## Documentation
|
||||
|
||||
- **AGENTS.md**: Agent architecture and best practices
|
||||
- **CLEANUP_TODO.md**: Architecture decisions and future considerations
|
||||
- **CHANGELOG.md**: Version history
|
||||
- OpenAI Responses API: https://platform.openai.com/docs/api-reference/responses
|
||||
- FastAPI: https://fastapi.tiangolo.com/
|
||||
- PydanticAI: https://ai.pydantic.dev/
|
||||
- **Project Documentation**: This file
|
||||
- **Agent Guidelines**: [AGENTS.md](AGENTS.md)
|
||||
- **Version History**: [CHANGELOG.md](CHANGELOG.md)
|
||||
- **OpenAI Responses API**: https://platform.openai.com/docs/api-reference/responses
|
||||
- **FastAPI**: https://fastapi.tiangolo.com/
|
||||
- **PydanticAI**: https://ai.pydantic.dev/
|
||||
|
||||
## License
|
||||
|
||||
[Add your license here]
|
||||
|
||||
## Version
|
||||
|
||||
Current version: **0.1.1** - Basic setup complete
|
||||
|
||||
---
|
||||
|
||||
**Note**: This is a testing/development API with mock responses. The architecture is production-ready and designed for easy integration with real LLM backends (PydanticAI, Ollama, OpenAI, etc.).
|
||||
**Note**: This is a production-ready testing API with mock responses. The architecture is designed for easy integration with real LLM backends (PydanticAI, Ollama, OpenAI, etc.).
|
||||
|
||||
Reference in New Issue
Block a user