226 lines
5.3 KiB
Markdown
226 lines
5.3 KiB
Markdown
# AI Provider Setup Guide
|
|
|
|
Step-by-step setup for each AI provider with TheSys C1, including current model IDs, pricing, and specifications.
|
|
|
|
---
|
|
|
|
## OpenAI
|
|
|
|
```typescript
|
|
import OpenAI from "openai";
|
|
|
|
const client = new OpenAI({
|
|
baseURL: "https://api.thesys.dev/v1/embed",
|
|
apiKey: process.env.THESYS_API_KEY,
|
|
});
|
|
```
|
|
|
|
### Available Models
|
|
|
|
**Stable (Production)**:
|
|
- `c1/openai/gpt-5/v-20250930` - GPT 5
|
|
- Input: $2.50/M | Output: $12.50/M
|
|
- Context: 380K | Max Output: 128K
|
|
|
|
**Experimental**:
|
|
- `c1-exp/openai/gpt-4.1/v-20250617` - GPT 4.1
|
|
- Input: $4.00/M | Output: $10.00/M
|
|
- Context: 1M | Max Output: 32K
|
|
|
|
### Example Usage
|
|
|
|
```typescript
|
|
const response = await client.chat.completions.create({
|
|
model: "c1/openai/gpt-5/v-20250930",
|
|
messages: [
|
|
{ role: "system", content: "You are a helpful assistant." },
|
|
{ role: "user", content: "Create a product comparison table." }
|
|
],
|
|
stream: true,
|
|
temperature: 0.7,
|
|
max_tokens: 2000
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Anthropic (Claude)
|
|
|
|
```typescript
|
|
// Same OpenAI client! TheSys handles the conversion
|
|
const client = new OpenAI({
|
|
baseURL: "https://api.thesys.dev/v1/embed",
|
|
apiKey: process.env.THESYS_API_KEY,
|
|
});
|
|
```
|
|
|
|
### Available Models
|
|
|
|
**Stable (Production)**:
|
|
- `c1/anthropic/claude-sonnet-4/v-20250930` - Claude Sonnet 4
|
|
- Input: $6.00/M | Output: $18.00/M
|
|
- Context: 180K | Max Output: 64K
|
|
|
|
**Experimental**:
|
|
- `c1-exp/anthropic/claude-3.5-haiku/v-20250709` - Claude 3.5 Haiku
|
|
- Input: $1.60/M | Output: $5.00/M
|
|
- Context: 180K | Max Output: 8K
|
|
|
|
**Deprecated** (not recommended):
|
|
- `c1/anthropic/claude-sonnet-3-5`
|
|
- `c1/anthropic/claude-3.7-sonnet`
|
|
|
|
### Example Usage
|
|
|
|
```typescript
|
|
const response = await client.chat.completions.create({
|
|
model: "c1/anthropic/claude-sonnet-4/v-20250930",
|
|
messages: [
|
|
{ role: "system", content: "You are Claude, an AI assistant." },
|
|
{ role: "user", content: "Generate a data visualization chart." }
|
|
],
|
|
stream: true,
|
|
temperature: 0.8,
|
|
max_tokens: 4096
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Cloudflare Workers AI
|
|
|
|
### Option 1: Workers AI Only (No C1)
|
|
|
|
Use Workers AI directly for cost optimization on simple use cases.
|
|
|
|
```typescript
|
|
const aiResponse = await env.AI.run('@cf/meta/llama-3-8b-instruct', {
|
|
messages: [
|
|
{ role: "system", content: "You are a helpful assistant." },
|
|
{ role: "user", content: "Hello!" }
|
|
]
|
|
});
|
|
```
|
|
|
|
### Option 2: Hybrid Approach (Workers AI + C1)
|
|
|
|
Use Workers AI for processing, then TheSys C1 for UI generation.
|
|
|
|
```typescript
|
|
// Step 1: Process with Workers AI (cheap)
|
|
const analysis = await env.AI.run('@cf/meta/llama-3-8b-instruct', {
|
|
messages: [{ role: "user", content: "Analyze this data..." }]
|
|
});
|
|
|
|
// Step 2: Generate UI with C1 (interactive components)
|
|
const c1Response = await fetch("https://api.thesys.dev/v1/embed/chat/completions", {
|
|
method: "POST",
|
|
headers: {
|
|
"Authorization": `Bearer ${env.THESYS_API_KEY}`,
|
|
"Content-Type": "application/json"
|
|
},
|
|
body: JSON.stringify({
|
|
model: "c1/openai/gpt-5/v-20250930",
|
|
messages: [
|
|
{
|
|
role: "system",
|
|
content: "Create a chart visualization for this data."
|
|
},
|
|
{
|
|
role: "user",
|
|
content: analysis.response
|
|
}
|
|
]
|
|
})
|
|
});
|
|
```
|
|
|
|
**Cost Benefits**:
|
|
- Workers AI: Very low cost for text generation
|
|
- C1 API: Only used for final UI generation
|
|
- Combined: Best of both worlds
|
|
|
|
---
|
|
|
|
## Python Backend (FastAPI/Flask)
|
|
|
|
```python
|
|
import openai
|
|
import os
|
|
|
|
client = openai.OpenAI(
|
|
base_url="https://api.thesys.dev/v1/embed",
|
|
api_key=os.getenv("THESYS_API_KEY")
|
|
)
|
|
```
|
|
|
|
### Example with TheSys SDK
|
|
|
|
```python
|
|
from thesys_genui_sdk import with_c1_response, write_content
|
|
|
|
@app.post("/api/chat")
|
|
@with_c1_response
|
|
async def chat(request: dict):
|
|
stream = client.chat.completions.create(
|
|
model="c1/anthropic/claude-sonnet-4/v-20250930",
|
|
messages=[
|
|
{"role": "system", "content": "You are a helpful assistant."},
|
|
{"role": "user", "content": request["prompt"]}
|
|
],
|
|
stream=True
|
|
)
|
|
|
|
for chunk in stream:
|
|
content = chunk.choices[0].delta.content
|
|
if content:
|
|
yield write_content(content)
|
|
```
|
|
|
|
See `templates/python-backend/` for complete examples.
|
|
|
|
---
|
|
|
|
## Model Selection Guide
|
|
|
|
### When to Use Each Provider
|
|
|
|
**GPT 5** (`c1/openai/gpt-5/v-20250930`):
|
|
- Best for: General-purpose applications
|
|
- Pros: Large context window (380K), lower cost
|
|
- Cons: Less nuanced than Claude for some tasks
|
|
|
|
**Claude Sonnet 4** (`c1/anthropic/claude-sonnet-4/v-20250930`):
|
|
- Best for: Complex reasoning, code generation
|
|
- Pros: Superior code understanding, detailed responses
|
|
- Cons: Higher cost, smaller context window
|
|
|
|
**Experimental Models** (`c1-exp/...`):
|
|
- Best for: Testing new features, non-production use
|
|
- Pros: Access to cutting-edge capabilities
|
|
- Cons: May have unexpected behavior, pricing subject to change
|
|
|
|
---
|
|
|
|
## Environment Variables
|
|
|
|
```bash
|
|
# Required
|
|
THESYS_API_KEY=sk-th-your-api-key-here
|
|
|
|
# Optional (for CORS configuration)
|
|
ALLOWED_ORIGINS=http://localhost:5173,https://your-domain.com
|
|
```
|
|
|
|
Get your API key: https://console.thesys.dev/keys
|
|
|
|
---
|
|
|
|
## Version Notes
|
|
|
|
Model version identifiers (e.g., `v-20250930`) may change as new versions are released. Always check the [TheSys Playground](https://console.thesys.dev/playground) for the latest available versions.
|
|
|
|
---
|
|
|
|
For complete integration examples and advanced patterns, see the main SKILL.md documentation.
|