A Node.js Netlify Function 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.
Netlify Function calls offer slightly more resources than Cloudflare Workers and may be more performant in some use cases. However, Netlify Functions do not support streaming.
A PHP port, designed to deploy on DigitalOcean App Platform, is available samestrin/claude-to-chatgpt-digitalocean here.
- Node.js: The script runs in a Node.js environment.
- node-fetch: A Node.js module used for making HTTP requests to external APIs.
- API Compatibility: Enables Claude model integration by mimicking the OpenAI ChatGPT API structure.
- Model Flexibility: Supports various configurations of Claude models including claude-instant-1 and claude-2.
- Performance Optimization: Utilizes the enhanced capabilities of Netlify Functions for improved performance over alternatives like Cloudflare Workers.
Click this button to deploy the project to your Netlify account:
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.
Start your Netlify dev server using the command:
netlify dev
then use the following curl command to test your deployment:
curl -X POST http://localhost:8888/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_CLAUDE_API_KEY" \
-d '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Hello, how are you?"}]}'
This application can be configured with various options through environment variables:
- CLAUDE_API_KEY: API key for accessing the Claude API.
- CLAUDE_BASE_URL: URL endpoint for the Claude API; defaults to "https://api.anthropic.com" if not set.
- CLAUDE_MAX_TOKENS: Maximum tokens that can be processed in a request; defaults to 100000 if not set.
- CLAUDE_MAX_REQUEST_SIZE_BYTES: Maximum size of the request payload in bytes; defaults to 1048576 (1MB) if not set.
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.