https://github.com/missuo/claude2openai
Convert the Claude API to OpenAI compatible API.
https://github.com/missuo/claude2openai
claude-3 claude-api openai-api
Last synced: about 1 year ago
JSON representation
Convert the Claude API to OpenAI compatible API.
- Host: GitHub
- URL: https://github.com/missuo/claude2openai
- Owner: missuo
- License: mit
- Created: 2024-03-17T20:13:46.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-11T19:33:16.000Z (over 1 year ago)
- Last Synced: 2025-03-30T07:11:09.759Z (over 1 year ago)
- Topics: claude-3, claude-api, openai-api
- Language: Go
- Homepage:
- Size: 43 KB
- Stars: 101
- Watchers: 4
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Claude2OpenAI
Used to convert the Claude API to OpenAI compatible API. **Easily use Claude with any OpenAI compatible client.**
## Compatibility
Currently it is only compatible with the Claude-3 family of models, if you pass in any other model, the default will be to use **claude-3-5-haiku-20241022**.
You can customize the list of allowed models by setting the `ALLOWED_MODELS` environment variable with a comma-separated list of model names. This is useful when new Claude models are released, allowing you to add support without rebuilding:
```bash
# Example: Setting custom allowed models
export ALLOWED_MODELS="claude-3-5-haiku-20241022,claude-3-5-sonnet-20241022,claude-3-haiku-20240307"
```
The first model in the list will be used as the default model.
## Request Example
```bash
curl http://127.0.0.1:6600/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-ant-xxxxxxxxxxxxxxxx" \
-d '{
"model": "claude-3-5-haiku-20241022",
"messages": [
{
"role": "system",
"content": "翻译为中文!"
},
{
"role": "user",
"content": "Hello!"
}
],
"stream": true
}'
```
## Features
### Image Support
Claude2OpenAI supports images in the same format as OpenAI. You can include images in your messages using either base64-encoded images or URLs.
```bash
curl http://127.0.0.1:6600/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-ant-xxxxxxxxxxxxxxxx" \
-d '{
"model": "claude-3-5-sonnet-20241022",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What's in this image?"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.jpg"
}
}
]
}
]
}'
```
### Debug Mode
You can enable debug mode to help troubleshoot issues:
1. Using an environment variable:
```bash
DEBUG=true ./claude2openai
```
2. Using the command-line flag:
```bash
./claude2openai -debug
```
In debug mode, detailed information about requests and responses will be logged to help with troubleshooting.
## Usage
### Homebrew (MacOS)
**Special thanks to [Sma1lboy](https://github.com/Sma1lboy) for his contribution.**
```bash
brew tap owo-network/brew
brew install claude2openai
```
### Docker
```bash
docker run -d --restart always -p 6600:6600 ghcr.io/missuo/claude2openai:latest
```
```bash
docker run -d --restart always -p 6600:6600 missuo/claude2openai:latest
```
To set custom allowed models with Docker:
```bash
docker run -d --restart always -p 6600:6600 -e ALLOWED_MODELS="claude-3-5-haiku-20241022,claude-3-5-sonnet-20241022" ghcr.io/missuo/claude2openai:latest
```
### Docker Compose
It is recommended that you use docker version **26.0.0** or higher, otherwise you need to specify the version in the `compose.yaml` file.
```diff
+version: "3.9"
```
```bash
mkdir claude2openai && cd claude2openai
wget -O compose.yaml https://raw.githubusercontent.com/missuo/claude2openai/main/compose.yaml
docker compose up -d
```
### Manual
Download the latest release from the [release page](https://github.com/missuo/claude2openai/releases).
```bash
chmod +x claude2openai
./claude2openai
```
## License
[MIT](https://github.com/missuo/claude2openai/blob/main/LICENSE)