Update app.py
Browse files
app.py
CHANGED
|
@@ -2,10 +2,12 @@ import requests
|
|
| 2 |
import json
|
| 3 |
import uuid
|
| 4 |
import time
|
|
|
|
| 5 |
from flask import Flask, request, jsonify, Response
|
| 6 |
|
| 7 |
# 1. 初始化Flask应用
|
| 8 |
app = Flask(__name__)
|
|
|
|
| 9 |
|
| 10 |
# 2. gpt-oss.com API的固定配置 (移除了Cookie)
|
| 11 |
GPT_OSS_API_URL = "https://api.gpt-oss.com/chatkit"
|
|
@@ -22,11 +24,16 @@ BASE_GPT_OSS_HEADERS = {
|
|
| 22 |
# 3. 根路由,包含新的使用说明
|
| 23 |
@app.route('/', methods=['GET'])
|
| 24 |
def root():
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
return jsonify({
|
| 26 |
"message": "欢迎使用 GPT-OSS to OpenAI 格式代理API",
|
| 27 |
"status": "ok",
|
| 28 |
-
"authentication_method": "
|
| 29 |
-
"
|
|
|
|
| 30 |
})
|
| 31 |
|
| 32 |
# 辅助函数:创建标准的OpenAI流式数据块
|
|
@@ -37,23 +44,13 @@ def create_openai_chunk(content, model="gpt-oss-120b"):
|
|
| 37 |
"choices": [{"index": 0, "delta": {"content": content}, "finish_reason": None}]
|
| 38 |
}
|
| 39 |
|
| 40 |
-
# 4. 核心API端点 (
|
| 41 |
@app.route('/v1/chat/completions', methods=['POST'])
|
| 42 |
def chat_completions_proxy():
|
| 43 |
-
#
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
combined_key = auth_header.split('Bearer ')[1]
|
| 49 |
-
if '|' not in combined_key:
|
| 50 |
-
return jsonify({"error": "API Key格式错误。正确格式为 '你的user_id|你的session令牌'。"}), 401
|
| 51 |
-
|
| 52 |
-
try:
|
| 53 |
-
user_id, session_token = combined_key.split('|', 1)
|
| 54 |
-
except ValueError:
|
| 55 |
-
return jsonify({"error": "API Key格式解析失败。请确保格式为 'user_id|session_token'。"}), 401
|
| 56 |
-
|
| 57 |
# --- 动态构建本次请求的Headers ---
|
| 58 |
request_headers = BASE_GPT_OSS_HEADERS.copy()
|
| 59 |
request_headers['cookie'] = f"user_id={user_id}; session={session_token}"
|
|
|
|
| 2 |
import json
|
| 3 |
import uuid
|
| 4 |
import time
|
| 5 |
+
import jwt
|
| 6 |
from flask import Flask, request, jsonify, Response
|
| 7 |
|
| 8 |
# 1. 初始化Flask应用
|
| 9 |
app = Flask(__name__)
|
| 10 |
+
app.config['SECRET_KEY'] = str(uuid.uuid4()) # 随机生成一个secret key用于JWT
|
| 11 |
|
| 12 |
# 2. gpt-oss.com API的固定配置 (移除了Cookie)
|
| 13 |
GPT_OSS_API_URL = "https://api.gpt-oss.com/chatkit"
|
|
|
|
| 24 |
# 3. 根路由,包含新的使用说明
|
| 25 |
@app.route('/', methods=['GET'])
|
| 26 |
def root():
|
| 27 |
+
# 生成示例user_id和session
|
| 28 |
+
example_user_id = str(uuid.uuid4())
|
| 29 |
+
example_session = jwt.encode({'user_id': example_user_id}, app.config['SECRET_KEY'], algorithm='HS256')
|
| 30 |
+
|
| 31 |
return jsonify({
|
| 32 |
"message": "欢迎使用 GPT-OSS to OpenAI 格式代理API",
|
| 33 |
"status": "ok",
|
| 34 |
+
"authentication_method": "无需认证,系统会自动生成用户ID和会话令牌",
|
| 35 |
+
"example_user_id": example_user_id,
|
| 36 |
+
"example_session_token": example_session
|
| 37 |
})
|
| 38 |
|
| 39 |
# 辅助函数:创建标准的OpenAI流式数据块
|
|
|
|
| 44 |
"choices": [{"index": 0, "delta": {"content": content}, "finish_reason": None}]
|
| 45 |
}
|
| 46 |
|
| 47 |
+
# 4. 核心API端点 (移除了认证逻辑)
|
| 48 |
@app.route('/v1/chat/completions', methods=['POST'])
|
| 49 |
def chat_completions_proxy():
|
| 50 |
+
# 自动生成user_id和session
|
| 51 |
+
user_id = str(uuid.uuid4())
|
| 52 |
+
session_token = jwt.encode({'user_id': user_id}, app.config['SECRET_KEY'], algorithm='HS256')
|
| 53 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
# --- 动态构建本次请求的Headers ---
|
| 55 |
request_headers = BASE_GPT_OSS_HEADERS.copy()
|
| 56 |
request_headers['cookie'] = f"user_id={user_id}; session={session_token}"
|