import json import logging import os import random import time import uuid import re import socket from concurrent.futures import ThreadPoolExecutor from functools import lru_cache import requests import tiktoken from flask import Flask, Response, jsonify, request, stream_with_context from flask_cors import CORS from typing import Dict, Any from requests.adapters import HTTPAdapter from urllib3.util.connection import create_connection import urllib3 # Constants CHAT_COMPLETION_CHUNK = 'chat.completion.chunk' CHAT_COMPLETION = 'chat.completion' CONTENT_TYPE_EVENT_STREAM = 'text/event-stream' app = Flask(__name__) logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) CORS(app, resources={r"/*": {"origins": "*"}}) executor = ThreadPoolExecutor(max_workers=10) proxy_url = os.getenv('PROXY_URL') # 获取环境变量中指定的 IP 地址 NOTDIAMOND_IP = os.getenv('NOTDIAMOND_IP') NOTDIAMOND_DOMAIN = 'not-diamond-workers.t7-cc4.workers.dev' if not NOTDIAMOND_IP: logger.error("NOTDIAMOND_IP environment variable is not set!") raise ValueError("NOTDIAMOND_IP must be set") # 自定义连接函数 def patched_create_connection(address, *args, **kwargs): host, port = address if host == NOTDIAMOND_DOMAIN: logger.info(f"Connecting to {NOTDIAMOND_DOMAIN} using IP: {NOTDIAMOND_IP}") return create_connection((NOTDIAMOND_IP, port), *args, **kwargs) return create_connection(address, *args, **kwargs) # 替换 urllib3 的默认连接函数 urllib3.util.connection.create_connection = patched_create_connection # 自定义 HTTPAdapter class CustomHTTPAdapter(HTTPAdapter): def init_poolmanager(self, *args, **kwargs): kwargs['socket_options'] = kwargs.get('socket_options', []) kwargs['socket_options'] += [(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)] return super(CustomHTTPAdapter, self).init_poolmanager(*args, **kwargs) # 创建自定义的 Session def create_custom_session(): session = requests.Session() adapter = CustomHTTPAdapter() session.mount('https://', adapter) session.mount('http://', adapter) return session # 修改 AuthManager 类以使用自定义 Session class AuthManager: def __init__(self, email: str, password: str): self.email = email self.password = password self.api_key: str = "" self.user_info: Dict[str, Any] = {} self.refresh_token: str = "" self.logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) self.session = create_custom_session() self.login() self.fetch_apikey() self.log_values() def log_values(self) -> None: """记录刷新令牌到日志中。""" self.logger.info(f"\033[92mRefresh Token: {self.refresh_token}\033[0m") def fetch_apikey(self) -> str: """获取API密钥。""" if self.api_key: return self.api_key try: url = "https://chat.notdiamond.ai/login" headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36' } response = self.session.get(url, headers=headers) response.raise_for_status() match = re.search(r'