Spaces:
Sleeping
Sleeping
File size: 4,604 Bytes
1a06196 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | """
常量定义模块
统一管理所有魔法数字和硬编码字符串
"""
# API相关常量
class APIConstants:
MODEL_ID = "MBZUAI-IFM/K2-Think"
MODEL_ID_NOTHINK = "MBZUAI-IFM/K2-Think-nothink"
MODEL_OWNER = "MBZUAI"
MODEL_ROOT = "mbzuai-k2-think-2508"
# HTTP状态码
HTTP_OK = 200
HTTP_UNAUTHORIZED = 401
HTTP_NOT_FOUND = 404
HTTP_INTERNAL_ERROR = 500
HTTP_GATEWAY_TIMEOUT = 504
# 认证相关
BEARER_PREFIX = "Bearer "
BEARER_PREFIX_LENGTH = 7
# 响应相关常量
class ResponseConstants:
CHAT_COMPLETION_OBJECT = "chat.completion"
CHAT_COMPLETION_CHUNK_OBJECT = "chat.completion.chunk"
MODEL_OBJECT = "model"
LIST_OBJECT = "list"
# 完成原因
FINISH_REASON_STOP = "stop"
FINISH_REASON_TOOL_CALLS = "tool_calls"
FINISH_REASON_ERROR = "error"
# 流式响应标记
STREAM_DONE_MARKER = "data: [DONE]\n\n"
STREAM_DATA_PREFIX = "data: "
# 工具调用相关常量
class ToolConstants:
FUNCTION_TYPE = "function"
TOOL_TYPE = "function"
# 工具调用ID前缀
CALL_ID_PREFIX = "call_"
# 工具提示长度限制
MAX_TOOL_PROMPT_LENGTH = 1000
TOOL_PROMPT_TRUNCATE_SUFFIX = "..."
# 内容处理相关常量
class ContentConstants:
# XML标签
THINK_START_TAG = "<think>"
THINK_END_TAG = "</think>"
ANSWER_START_TAG = "<answer>"
ANSWER_END_TAG = "</answer>"
# 内容类型
TEXT_TYPE = "text"
IMAGE_URL_TYPE = "image_url"
# 图像占位符
IMAGE_PLACEHOLDER = "[图像内容]"
# 默认值
DEFAULT_USER_NAME = "User"
DEFAULT_USER_LOCATION = "Unknown"
DEFAULT_USER_LANGUAGE = "en-US"
DEFAULT_TIMEZONE = "Asia/Shanghai"
# 错误消息常量
class ErrorMessages:
INVALID_API_KEY = "Invalid API key provided"
AUTHENTICATION_ERROR = "authentication_error"
UPSTREAM_ERROR = "upstream_error"
TIMEOUT_ERROR = "timeout_error"
API_ERROR = "api_error"
# 中文错误消息
REQUEST_TIMEOUT = "请求超时"
SERIALIZATION_FAILED = "请求数据序列化失败"
UPSTREAM_SERVICE_ERROR = "上游服务错误"
# 日志消息常量
class LogMessages:
TOOL_STATUS = "🔧 工具调用状态: has_tools={}, tools_count={}"
MESSAGE_RECEIVED = "📥 接收到的原始消息数: {}"
ROLE_DISTRIBUTION = "📊 {}消息角色分布: {}"
MESSAGE_PROCESSED = "🔄 消息处理完成,原始消息数: {}, 处理后消息数: {}"
NO_TOOLS = "⏭️ 无工具调用,直接使用原始消息"
JSON_VALIDATION_SUCCESS = "✅ K2Think请求体JSON序列化验证通过"
JSON_VALIDATION_FAILED = "❌ K2Think请求体JSON序列化失败: {}"
JSON_FIXED = "🔧 使用default=str修复了序列化问题"
# 动态chunk计算日志
DYNAMIC_CHUNK_CALC = "动态chunk_size计算: 内容长度={}, 计算值={}, 最终值={}"
# 工具相关日志
TOOL_PROMPT_TOO_LONG = "工具提示过长 ({} 字符),将截断"
SYSTEM_MESSAGE_TOO_LONG = "系统消息过长 ({} 字符),使用简化版本"
TOOL_CALLS_EXTRACTED = "提取到工具调用: {}"
# HTTP头常量
class HeaderConstants:
AUTHORIZATION = "Authorization"
CONTENT_TYPE = "Content-Type"
ACCEPT = "Accept"
ORIGIN = "Origin"
REFERER = "Referer"
USER_AGENT = "User-Agent"
CACHE_CONTROL = "Cache-Control"
CONNECTION = "Connection"
X_ACCEL_BUFFERING = "X-Accel-Buffering"
# 值
APPLICATION_JSON = "application/json"
TEXT_EVENT_STREAM = "text/event-stream"
EVENT_STREAM_JSON = "text/event-stream,application/json"
NO_CACHE = "no-cache"
KEEP_ALIVE = "keep-alive"
NO_BUFFERING = "no"
# User-Agent值
DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
# 时间相关常量
class TimeConstants:
# 时间格式
DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
DATE_FORMAT = "%Y-%m-%d"
TIME_FORMAT = "%H:%M:%S"
WEEKDAY_FORMAT = "%A"
# 微秒转换
MICROSECONDS_MULTIPLIER = 1000000
# 数值常量
class NumericConstants:
# chunk大小限制
MIN_CHUNK_SIZE = 50
# 内容预览长度
CONTENT_PREVIEW_LENGTH = 200
CONTENT_PREVIEW_SUFFIX = "..."
# 默认token使用量
DEFAULT_PROMPT_TOKENS = 0
DEFAULT_COMPLETION_TOKENS = 0
DEFAULT_TOTAL_TOKENS = 0 |