A PHP DigitalOcean App Platform based port of jtsang4/claude-to-chatgpt's cloudflare-worker.js. This project converts the API of Anthropic's Claude model to the OpenAI Chat API format.
DigitalOcean App Platform offers more resources than Cloudflare Workers and will be more performant in most use cases.
A Node.js port, designed to deploy on Netlify, is available samestrin/claude-to-chatgpt-netlify here.
- PHP: Server-side scripting language (PHP 8.0 or later recommended).
- nikic/fast-route: A fast request router for PHP, used for efficient routing of API requests.
- API Compatibility: Enables Claude model integration by mimicking the OpenAI ChatGPT API structure.
- Streaming Support: Facilitates real-time interaction with the Claude model through streaming responses.
- Model Flexibility: Supports various configurations of Claude models including claude-instant-1 and claude-2.
- Performance Optimization: Utilizes the enhanced capabilities of DigitalOcean's infrastructure for improved performance over alternatives like Cloudflare Workers.
Click this button to deploy the project to your DigitalOcean account:
- Navigate to your project in the DigitalOcean App Platform.
- Go to the "Commands" section.
- Under "Run Command", enter the following:
heroku-nginx -C nginx.conf .
Endpoint: /v1/chat/completions
Method: POST
Simulate ChatGPT-like interaction by sending a message to the Claude model.
model
: The OpenAI model (e.g., 'gpt-3.5-turbo') or Claude model (e.g.,'claude-instant-1') to use. (OpenAI models are automatically mapped to Claude models.)messages
: An array of message objects where each message has arole
('user' or 'assistant') andcontent
.
Use a tool like Postman or curl to make a request:
curl -X POST http://localhost:[PORT]/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-instant-1",
"messages": [
{"role": "user", "content": "Hello, how are you?"}
]
}'
The server will process the request and return the model's response in JSON format.
Endpoint: /v1/models
Method: GET
Retrieve information about the available models.
Use curl to make a request:
curl http://localhost:[PORT]/v1/models
The server will return a list of available models and their details in JSON format.
Endpoint: /
Method: OPTIONS
Handle pre-flight requests for CORS (Cross-Origin Resource Sharing). This endpoint provides necessary headers in response to pre-flight checks performed by browsers to ensure that the server accepts requests from allowed origins.
This is typically used by browsers automatically before sending actual requests, but you can manually test CORS settings using curl:
curl -X OPTIONS http://localhost:[PORT]/ \
-H "Access-Control-Request-Method: POST" \
-H "Origin: http://example.com"
The server responds with appropriate CORS headers such as Access-Control-Allow-Origin.
This application can be configured with various options through environment variables:
- CLAUDE_API_KEY: Your API key for accessing Claude API.
- CLAUDE_BASE_URL: The endpoint URL for the Claude API.
Contributions to this project are welcome. Please fork the repository and submit a pull request with your changes or improvements.
This project is licensed under the MIT License - see the LICENSE file for details.