Initial commit: GPT CLI (Rust)
- Complete Rust implementation of GPT CLI - Support for OpenAI and Anthropic models - Session persistence and management - Web search integration via Responses API - Interactive commands and model switching - Comprehensive error handling and logging 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
165
README.md
Normal file
165
README.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# GPT CLI (Rust)
|
||||
|
||||
A lightweight command-line interface for chatting with AI models (OpenAI and Anthropic), written in Rust.
|
||||
|
||||
This is a Rust rewrite of the original Python gptCLI, providing the same functionality with improved performance and memory safety.
|
||||
|
||||
## Features
|
||||
|
||||
- **Multi-provider support** - Works with both OpenAI and Anthropic models
|
||||
- **Session persistence** - Conversations are automatically saved and can be resumed later
|
||||
- **Model switching** - Change models on the fly with interactive selection
|
||||
- **Web search** - Enable web search tool for OpenAI models (when supported)
|
||||
- **Reasoning summaries** - Enable reasoning summaries for compatible OpenAI models
|
||||
- **Interactive commands** - Full set of slash commands for session management
|
||||
- **Cross-platform** - Runs on Linux, macOS, and Windows
|
||||
|
||||
## Installation
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Rust 1.70 or later
|
||||
- API keys for the providers you want to use:
|
||||
- `OPENAI_API_KEY` for OpenAI models
|
||||
- `ANTHROPIC_API_KEY` for Anthropic models
|
||||
|
||||
### Build from source
|
||||
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd gpt-cli-rust
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
The binary will be available at `target/release/gpt-cli-rust`.
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
# Run with default session and model
|
||||
./target/release/gpt-cli-rust
|
||||
|
||||
# Start with a specific session
|
||||
./target/release/gpt-cli-rust --session my-session
|
||||
|
||||
# Start with a specific model
|
||||
./target/release/gpt-cli-rust --model claude-3-5-sonnet-20241022
|
||||
|
||||
# Combine options
|
||||
./target/release/gpt-cli-rust --session work --model gpt-4o
|
||||
```
|
||||
|
||||
## Supported Models
|
||||
|
||||
### OpenAI
|
||||
- gpt-4.1
|
||||
- gpt-4.1-mini
|
||||
- gpt-4o
|
||||
- gpt-5 (default)
|
||||
- gpt-5-chat-latest
|
||||
- o1
|
||||
- o3
|
||||
- o4-mini
|
||||
- o3-mini
|
||||
|
||||
### Anthropic
|
||||
- claude-3-5-sonnet-20241022
|
||||
- claude-3-5-haiku-20241022
|
||||
- claude-3-opus-20240229
|
||||
- claude-3-sonnet-20240229
|
||||
- claude-3-haiku-20240307
|
||||
|
||||
## Commands
|
||||
|
||||
### Chat Commands
|
||||
- Type normally to chat with the AI
|
||||
- Use `/help` to see all available commands
|
||||
|
||||
### Session Management
|
||||
- `/list` - List all saved sessions
|
||||
- `/new <name>` - Create a new session
|
||||
- `/switch [name]` - Switch to another session (interactive picker if no name)
|
||||
- `/delete [name]` - Delete a session (interactive picker if no name)
|
||||
- `/clear` - Clear current conversation
|
||||
|
||||
### Model Management
|
||||
- `/model [name]` - Switch model (interactive picker if no name)
|
||||
- `/models` - List all supported models
|
||||
|
||||
### Features (OpenAI only)
|
||||
- `/tool websearch on|off` - Enable/disable web search
|
||||
- `/reasoning on|off` - Enable/disable reasoning summaries
|
||||
- `/effort [low|medium|high]` - Set reasoning effort level (GPT-5 only)
|
||||
|
||||
### Other
|
||||
- `/help` - Show help
|
||||
- `/exit` - Exit the CLI
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- `OPENAI_API_KEY` - Your OpenAI API key (required for OpenAI models)
|
||||
- `ANTHROPIC_API_KEY` - Your Anthropic API key (required for Anthropic models)
|
||||
- `OPENAI_BASE_URL` - Custom base URL for OpenAI API (optional, for proxies)
|
||||
- `DEFAULT_MODEL` - Default model if not specified (default: gpt-5)
|
||||
|
||||
## Session Storage
|
||||
|
||||
Sessions are stored as JSON files in `~/.chat_cli_sessions/`. Each session contains:
|
||||
- Conversation history
|
||||
- Current model
|
||||
- Feature settings (web search, reasoning)
|
||||
- Metadata (last updated time)
|
||||
|
||||
## Differences from Python Version
|
||||
|
||||
While functionally equivalent, this Rust version offers:
|
||||
- **Better performance** - Faster startup and lower memory usage
|
||||
- **Enhanced safety** - Rust's type system prevents many common errors
|
||||
- **Improved error handling** - More detailed error messages and recovery
|
||||
- **Modern UI** - Better terminal colors and interactive selection
|
||||
- **Cross-platform** - Single binary that works across platforms
|
||||
|
||||
## Development
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── main.rs # Entry point and CLI argument parsing
|
||||
├── cli.rs # Main CLI loop and command handling
|
||||
├── core/
|
||||
│ ├── mod.rs # Core module exports
|
||||
│ ├── session.rs # Session management and persistence
|
||||
│ ├── client.rs # API clients for OpenAI and Anthropic
|
||||
│ └── provider.rs # Provider definitions and model lists
|
||||
└── utils/
|
||||
├── mod.rs # Utility module exports
|
||||
├── display.rs # Terminal display and formatting
|
||||
└── input.rs # Input handling and interactive prompts
|
||||
```
|
||||
|
||||
### Building
|
||||
|
||||
```bash
|
||||
# Development build
|
||||
cargo build
|
||||
|
||||
# Release build (optimized)
|
||||
cargo build --release
|
||||
|
||||
# Run tests
|
||||
cargo test
|
||||
|
||||
# Run with debug output
|
||||
RUST_LOG=debug cargo run
|
||||
|
||||
# Format code
|
||||
cargo fmt
|
||||
|
||||
# Check for issues
|
||||
cargo clippy
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This project maintains the same license as the original Python version.
|
||||
Reference in New Issue
Block a user