Doku
SDKs
Beispiele für die verbreitetsten SDKs. Alle lesen den API-Key aus der Umgebungsvariable
TOKENWERK_API_KEY; ersetzen Sie MODELL durch den Namen eines Modells.
OpenAI-Format
URL https://api.tokenwerk.ai/v1, API-Key als Authorization:
Bearer.
Python
pip install openai
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.tokenwerk.ai/v1", api_key=os.environ["TOKENWERK_API_KEY"])
r = client.chat.completions.create(
model="MODELL",
messages=[{"role": "user", "content": "Hello"}],
)
print(r.choices[0].message.content)
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.tokenwerk.ai/v1", api_key=os.environ["TOKENWERK_API_KEY"])
stream = client.chat.completions.create(
model="MODELL",
messages=[{"role": "user", "content": "Hello"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
JavaScript / TypeScript
npm install openai
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.tokenwerk.ai/v1',
apiKey: process.env.TOKENWERK_API_KEY,
});
const r = await client.chat.completions.create({
model: 'MODELL',
messages: [{ role: 'user', content: 'Hello' }],
});
console.log(r.choices[0].message.content);
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.tokenwerk.ai/v1',
apiKey: process.env.TOKENWERK_API_KEY,
});
const stream = await client.chat.completions.create({
model: 'MODELL',
messages: [{ role: 'user', content: 'Hello' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}
Go
go get github.com/openai/openai-go/v3
package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://api.tokenwerk.ai/v1"),
option.WithAPIKey(os.Getenv("TOKENWERK_API_KEY")),
)
r, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: "MODELL",
Messages: []openai.ChatCompletionMessageParamUnion{openai.UserMessage("Hello")},
})
if err != nil {
panic(err)
}
fmt.Println(r.Choices[0].Message.Content)
}
Java
implementation("com.openai:openai-java:4.81.0")
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
public class Main {
public static void main(String[] args) {
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://api.tokenwerk.ai/v1")
.apiKey(System.getenv("TOKENWERK_API_KEY"))
.build();
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.model("MODELL")
.addUserMessage("Hello")
.build();
ChatCompletion r = client.chat().completions().create(params);
System.out.println(r.choices().get(0).message().content().orElse(""));
}
}
.NET
dotnet add package OpenAI
using System.ClientModel;
using OpenAI;
using OpenAI.Chat;
ChatClient client = new(
model: "MODELL",
credential: new ApiKeyCredential(Environment.GetEnvironmentVariable("TOKENWERK_API_KEY")!),
options: new OpenAIClientOptions { Endpoint = new Uri("https://api.tokenwerk.ai/v1") });
ChatCompletion r = client.CompleteChat("Hello");
Console.WriteLine(r.Content[0].Text);
Vercel AI SDK
npm install ai @ai-sdk/openai-compatible
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText } from 'ai';
const tokenwerk = createOpenAICompatible({
name: 'tokenwerk',
baseURL: 'https://api.tokenwerk.ai/v1',
apiKey: process.env.TOKENWERK_API_KEY,
});
const { text } = await generateText({
model: tokenwerk('MODELL'),
prompt: 'Hello',
});
console.log(text);
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { streamText } from 'ai';
const tokenwerk = createOpenAICompatible({
name: 'tokenwerk',
baseURL: 'https://api.tokenwerk.ai/v1',
apiKey: process.env.TOKENWERK_API_KEY,
});
const result = streamText({
model: tokenwerk('MODELL'),
prompt: 'Hello',
});
for await (const text of result.textStream) {
process.stdout.write(text);
}
LangChain
pip install -U langchain-openai
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="MODELL",
base_url="https://api.tokenwerk.ai/v1",
api_key=os.environ["TOKENWERK_API_KEY"],
)
print(llm.invoke("Hello").text)
LiteLLM
Mit dem Präfix openai/ verwendet LiteLLM das OpenAI-Format mit Ihrer URL.
pip install litellm
import os
import litellm
r = litellm.completion(
model="openai/MODELL",
api_base="https://api.tokenwerk.ai/v1",
api_key=os.environ["TOKENWERK_API_KEY"],
messages=[{"role": "user", "content": "Hello"}],
)
print(r.choices[0].message.content)
PHP
composer require openai-php/client
<?php
require 'vendor/autoload.php';
$client = OpenAI::factory()
->withApiKey(getenv('TOKENWERK_API_KEY'))
->withBaseUri('https://api.tokenwerk.ai/v1')
->make();
$r = $client->chat()->create([
'model' => 'MODELL',
'messages' => [['role' => 'user', 'content' => 'Hello']],
]);
echo $r->choices[0]->message->content;
Rust
cargo add async-openai --features chat-completion
cargo add tokio --features full
use async_openai::{
Client,
config::OpenAIConfig,
types::chat::{ChatCompletionRequestUserMessage, CreateChatCompletionRequestArgs},
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = OpenAIConfig::new()
.with_api_base("https://api.tokenwerk.ai/v1")
.with_api_key(std::env::var("TOKENWERK_API_KEY")?);
let client = Client::with_config(config);
let request = CreateChatCompletionRequestArgs::default()
.model("MODELL")
.messages([ChatCompletionRequestUserMessage::from("Hello").into()])
.build()?;
let r = client.chat().create(request).await?;
println!("{}", r.choices[0].message.content.clone().unwrap_or_default());
Ok(())
}
curl
curl https://api.tokenwerk.ai/v1/chat/completions \
-H "Authorization: Bearer $TOKENWERK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODELL",
"messages": [{"role": "user", "content": "Hello"}]
}'
Anthropic-Format
URL https://api.tokenwerk.ai (ohne /v1, das SDK hängt
/v1/messages an), API-Key als x-api-key.
Anthropic Python
pip install anthropic
import os
import anthropic
client = anthropic.Anthropic(base_url="https://api.tokenwerk.ai", api_key=os.environ["TOKENWERK_API_KEY"])
m = client.messages.create(
model="MODELL",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)
print(m.content[0].text)
import os
import anthropic
client = anthropic.Anthropic(base_url="https://api.tokenwerk.ai", api_key=os.environ["TOKENWERK_API_KEY"])
with client.messages.stream(
model="MODELL",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Anthropic TypeScript
npm install @anthropic-ai/sdk
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'https://api.tokenwerk.ai',
apiKey: process.env.TOKENWERK_API_KEY,
});
const m = await client.messages.create({
model: 'MODELL',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello' }],
});
console.log(m.content[0].type === 'text' ? m.content[0].text : m.content[0]);
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'https://api.tokenwerk.ai',
apiKey: process.env.TOKENWERK_API_KEY,
});
const stream = client.messages
.stream({
model: 'MODELL',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello' }],
})
.on('text', (text) => process.stdout.write(text));
await stream.finalMessage();
Anthropic curl
curl https://api.tokenwerk.ai/v1/messages \
-H "x-api-key: $TOKENWERK_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "MODELL",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'