Refactor: restructure market module with services, stores, and utils
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
LLM 配置数据结构
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Dict
|
||||
|
||||
|
||||
@dataclass
|
||||
class LLMConfig:
|
||||
"""LLM 配置"""
|
||||
api_key: str = ""
|
||||
api_base: str = "https://api.openai.com/v1"
|
||||
model: str = "gpt-4o-mini"
|
||||
|
||||
@property
|
||||
def enabled(self) -> bool:
|
||||
"""是否启用(有 API Key 才启用)"""
|
||||
return bool(self.api_key)
|
||||
|
||||
def to_dict(self) -> Dict:
|
||||
"""转换为字典(API Key 脱敏)"""
|
||||
masked_key = ""
|
||||
if self.api_key:
|
||||
if len(self.api_key) > 8:
|
||||
masked_key = self.api_key[:4] + "****" + self.api_key[-4:]
|
||||
else:
|
||||
masked_key = "****"
|
||||
|
||||
return {
|
||||
"api_key": masked_key,
|
||||
"api_key_set": bool(self.api_key),
|
||||
"api_base": self.api_base,
|
||||
"model": self.model,
|
||||
"enabled": self.enabled
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict) -> 'LLMConfig':
|
||||
"""从字典创建"""
|
||||
return cls(
|
||||
api_key=data.get("api_key", ""),
|
||||
api_base=data.get("api_base", "https://api.openai.com/v1"),
|
||||
model=data.get("model", "gpt-4o-mini")
|
||||
)
|
||||
Reference in New Issue
Block a user