本文档提供各种编程语言和客户端工具集成 AI Studio Proxy API 的示例代码。
curl http://127.0.0.1:2048/healthcurl http://127.0.0.1:2048/v1/modelscurl -X POST http://127.0.0.1:2048/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"model": "gemini-2.5-pro",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下自己"
}
],
"stream": false,
"temperature": 0.7,
"max_output_tokens": 2048
}'curl -X POST http://127.0.0.1:2048/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"model": "gemini-2.5-flash",
"messages": [
{
"role": "user",
"content": "请讲一个关于人工智能的故事"
}
],
"stream": true
}' --no-buffercurl -X POST http://127.0.0.1:2048/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-pro",
"messages": [
{
"role": "system",
"content": "你是一位专业的 Python 开发者"
},
{
"role": "user",
"content": "如何使用 asyncio 实现并发?"
}
],
"stream": false,
"temperature": 0.5,
"max_output_tokens": 4096,
"top_p": 0.9,
"stop": ["\n\nUser:", "\n\nAssistant:"]
}'pip install openaifrom openai import OpenAI
# 初始化客户端
client = OpenAI(
base_url="http://127.0.0.1:2048/v1",
api_key="your-api-key" # 如果服务器不需要认证,可以是任意值
)
# 非流式请求
def basic_chat():
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[
{"role": "system", "content": "你是一个有用的助手"},
{"role": "user", "content": "什么是 FastAPI?"}
]
)
print(response.choices[0].message.content)
basic_chat()from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:2048/v1",
api_key="your-api-key"
)
def streaming_chat():
stream = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[
{"role": "user", "content": "请讲一个关于机器学习的故事"}
],
stream=True
)
print("AI: ", end="", flush=True)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
print() # 换行
streaming_chat()from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:2048/v1",
api_key="your-api-key"
)
def advanced_chat():
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[
{"role": "system", "content": "你是一个 Python 专家"},
{"role": "user", "content": "解释装饰器的工作原理"}
],
temperature=0.7,
max_tokens=2048,
top_p=0.9,
stop=["\n\n用户:", "\n\n助手:"]
)
print(response.choices[0].message.content)
print(f"\n使用的 tokens: {response.usage.total_tokens}")
advanced_chat()from openai import OpenAI, APIError, APIConnectionError
import time
client = OpenAI(
base_url="http://127.0.0.1:2048/v1",
api_key="your-api-key",
timeout=60.0
)
def chat_with_retry(messages, max_retries=3):
"""带重试机制的聊天"""
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=messages
)
return response.choices[0].message.content
except APIConnectionError as e:
print(f"连接错误 (尝试 {attempt + 1}/{max_retries}): {e}")
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # 指数退避
continue
raise
except APIError as e:
print(f"API 错误: {e}")
raise
# 使用示例
try:
result = chat_with_retry([
{"role": "user", "content": "你好"}
])
print(result)
except Exception as e:
print(f"请求失败: {e}")pip install requestsimport requests
import json
def chat_non_streaming():
url = "http://127.0.0.1:2048/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your-api-key"
}
data = {
"model": "gemini-2.5-pro",
"messages": [
{"role": "user", "content": "什么是深度学习?"}
],
"stream": False
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
print(result['choices'][0]['message']['content'])
else:
print(f"错误 {response.status_code}: {response.text}")
chat_non_streaming()import requests
import json
def chat_streaming():
url = "http://127.0.0.1:2048/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your-api-key"
}
data = {
"model": "gemini-2.5-pro",
"messages": [
{"role": "user", "content": "请讲一个故事"}
],
"stream": True
}
response = requests.post(url, headers=headers, json=data, stream=True)
print("AI: ", end="", flush=True)
for line in response.iter_lines():
if line:
line = line.decode('utf-8')
if line.startswith('data: '):
data_str = line[6:] # 移除 'data: ' 前缀
if data_str.strip() == '[DONE]':
print("\n")
break
try:
chunk = json.loads(data_str)
if 'choices' in chunk:
delta = chunk['choices'][0].get('delta', {})
content = delta.get('content', '')
if content:
print(content, end="", flush=True)
except json.JSONDecodeError:
continue
chat_streaming()npm install openaiimport OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'http://127.0.0.1:2048/v1',
apiKey: 'your-api-key',
});
// 非流式请求
async function basicChat() {
const response = await client.chat.completions.create({
model: 'gemini-2.5-pro',
messages: [
{ role: 'system', content: '你是一个有用的助手' },
{ role: 'user', content: '什么是 Node.js?' }
],
});
console.log(response.choices[0].message.content);
}
basicChat();import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'http://127.0.0.1:2048/v1',
apiKey: 'your-api-key',
});
async function streamingChat() {
const stream = await client.chat.completions.create({
model: 'gemini-2.5-pro',
messages: [
{ role: 'user', content: '请讲一个关于编程的故事' }
],
stream: true,
});
process.stdout.write('AI: ');
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content || '';
process.stdout.write(content);
}
console.log('\n');
}
streamingChat();import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'http://127.0.0.1:2048/v1',
apiKey: 'your-api-key',
timeout: 60 * 1000, // 60秒超时
});
async function chatWithRetry(messages, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const response = await client.chat.completions.create({
model: 'gemini-2.5-pro',
messages: messages,
});
return response.choices[0].message.content;
} catch (error) {
console.error(`尝试 ${attempt + 1}/${maxRetries} 失败:`, error.message);
if (attempt < maxRetries - 1) {
// 指数退避
await new Promise(resolve => setTimeout(resolve, 2 ** attempt * 1000));
continue;
}
throw error;
}
}
}
// 使用示例
chatWithRetry([
{ role: 'user', content: '你好' }
]).then(result => {
console.log(result);
}).catch(error => {
console.error('请求失败:', error);
});// 非流式请求
async function chatNonStreaming() {
const response = await fetch('http://127.0.0.1:2048/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your-api-key',
},
body: JSON.stringify({
model: 'gemini-2.5-pro',
messages: [
{ role: 'user', content: '什么是 JavaScript?' }
],
stream: false,
}),
});
const data = await response.json();
console.log(data.choices[0].message.content);
}
// 流式请求
async function chatStreaming() {
const response = await fetch('http://127.0.0.1:2048/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your-api-key',
},
body: JSON.stringify({
model: 'gemini-2.5-pro',
messages: [
{ role: 'user', content: '请讲一个故事' }
],
stream: true,
}),
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
process.stdout.write('AI: ');
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split('\n');
for (const line of lines) {
if (line.startsWith('data: ')) {
const data = line.slice(6);
if (data.trim() === '[DONE]') {
console.log('\n');
return;
}
try {
const parsed = JSON.parse(data);
const content = parsed.choices[0]?.delta?.content || '';
process.stdout.write(content);
} catch (e) {
// 忽略解析错误
}
}
}
}
}
chatNonStreaming();
chatStreaming();配置步骤:
- 打开 Open WebUI
- 进入 "设置" → "连接"
- 在 "模型" 部分,点击 "添加模型"
- 配置如下:
- 模型名称:
aistudio-gemini - API 基础 URL:
http://127.0.0.1:2048/v1 - API 密钥: 输入有效密钥或留空(根据服务器配置)
- 模型名称:
- 保存设置
配置步骤:
- 打开 ChatBox
- 进入 "设置" → "AI 提供商"
- 选择 "OpenAI API"
- 配置如下:
- API 域名:
http://127.0.0.1:2048 - API 密钥: 输入有效密钥
- 模型: 从下拉列表选择模型
- API 域名:
- 保存设置
配置步骤:
- 打开 LobeChat
- 点击右上角设置图标
- 进入 "语言模型" 设置
- 选择 "OpenAI"
- 配置如下:
- API 地址:
http://127.0.0.1:2048/v1 - API Key: 输入有效密钥
- API 地址:
- 保存设置
配置步骤:
- 在 VS Code 中安装 Continue 扩展
- 打开 Continue 设置 (JSON)
- 添加配置:
{
"models": [
{
"title": "AI Studio Gemini",
"provider": "openai",
"model": "gemini-2.5-pro",
"apiBase": "http://127.0.0.1:2048/v1",
"apiKey": "your-api-key"
}
]
}- 保存并重载 VS Code
始终实现错误处理和重试机制:
def robust_chat(client, messages, max_retries=3):
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=messages,
timeout=60
)
return response
except Exception as e:
if attempt == max_retries - 1:
raise
time.sleep(2 ** attempt)为请求设置合理的超时时间:
client = OpenAI(
base_url="http://127.0.0.1:2048/v1",
api_key="your-api-key",
timeout=60.0 # 60秒超时
)对于长文本生成,优先使用流式响应:
stream = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[{"role": "user", "content": "写一篇长文"}],
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)根据场景调整参数:
# 创意写作 - 高温度
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[{"role": "user", "content": "写一首诗"}],
temperature=0.9,
max_tokens=2048
)
# 技术问答 - 低温度
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[{"role": "user", "content": "什么是REST API?"}],
temperature=0.3,
max_tokens=1024
)问题: 无法连接到服务器
解决方案:
# 检查服务器是否运行
curl http://127.0.0.1:2048/health
# 检查端口是否正确
# 如果使用自定义端口,需要修改 base_url问题: 401 Unauthorized
解决方案:
# 确保提供了有效的 API 密钥
client = OpenAI(
base_url="http://127.0.0.1:2048/v1",
api_key="your-valid-api-key" # 使用有效密钥
)问题: 请求超时
解决方案:
# 增加超时时间
client = OpenAI(
base_url="http://127.0.0.1:2048/v1",
api_key="your-api-key",
timeout=120.0 # 增加到 120 秒
)- API 使用指南 - 详细的 API 端点说明
- OpenAI 兼容性说明 - 兼容性和限制
- 故障排除指南 - 常见问题解决
最后更新: 2024年11月
当前版本: v0.6.0
如有问题或需要更多示例,请提交 Issue。