145 lines
3.2 KiB
Markdown
145 lines
3.2 KiB
Markdown
|
|
# LLM<4C><4D><EFBFBD><EFBFBD>ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
|||
|
|
|
|||
|
|
## ? <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ѽ<EFBFBD>LLM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀֻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǧ<EFBFBD><EFBFBD>ģ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>еط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ȡ<EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
## ?? <20><><EFBFBD>üܹ<C3BC>
|
|||
|
|
|
|||
|
|
### 1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>`config/llm_config.py`
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**Ψһ<CEA8><D2BB>**LLM<4C><4D><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǧ<EFBFBD><C7A7>ģ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
QWEN_CONFIG = LLMConfig(
|
|||
|
|
provider="qwen",
|
|||
|
|
api_key="sk-c0dbefa1718d46eaa897199135066f00",
|
|||
|
|
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|||
|
|
model="qwen-plus-latest",
|
|||
|
|
temperature=0.7,
|
|||
|
|
max_tokens=2000
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# Ĭ<><C4AC>ʹ<EFBFBD><CAB9>ǧ<EFBFBD><C7A7>ģ<EFBFBD><C4A3>
|
|||
|
|
DEFAULT_CONFIG = QWEN_CONFIG
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. ͳһ<CDB3><D2BB><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`src/config/unified_config.py`
|
|||
|
|
|
|||
|
|
ͳһ<EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD> `config/llm_config.py` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
def _load_default_llm_config(self) -> LLMConfig:
|
|||
|
|
"""<22><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>LLM<4C><4D><EFBFBD><EFBFBD>"""
|
|||
|
|
try:
|
|||
|
|
from config.llm_config import DEFAULT_CONFIG
|
|||
|
|
# ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD>ʽ
|
|||
|
|
return LLMConfig(...)
|
|||
|
|
except Exception as e:
|
|||
|
|
logger.warning(f"<22><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>LLM<4C><4D><EFBFBD>ã<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ: {e}")
|
|||
|
|
return LLMConfig()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
|
|||
|
|
ͨ<EFBFBD><EFBFBD> `get_config()` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡȫ<C8A1><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from src.config.unified_config import get_config
|
|||
|
|
|
|||
|
|
config = get_config()
|
|||
|
|
llm_config = config.llm # <20><>ȡLLM<4C><4D><EFBFBD><EFBFBD>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ? <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
|
|
|||
|
|
### <20><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>Ҫʹ<D2AA><CAB9>LLM<4C>ĵط<C4B5><D8B7><EFBFBD>
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from src.config.unified_config import get_config
|
|||
|
|
|
|||
|
|
# <20><>ȡLLM<4C><4D><EFBFBD><EFBFBD>
|
|||
|
|
llm_config = get_config().llm
|
|||
|
|
|
|||
|
|
# ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
print(f"Provider: {llm_config.provider}")
|
|||
|
|
print(f"Model: {llm_config.model}")
|
|||
|
|
print(f"API Key: {llm_config.api_key}")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### ʾ<><CABE><EFBFBD><EFBFBD>AI<41><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
class AISuggestionService:
|
|||
|
|
def __init__(self):
|
|||
|
|
# <20><>ͳһ<CDB3><D2BB><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡLLM<4C><4D><EFBFBD><EFBFBD>
|
|||
|
|
self.llm_config = get_config().llm
|
|||
|
|
logger.info(f"ʹ<><CAB9>LLM<4C><4D><EFBFBD><EFBFBD>: {self.llm_config.provider} - {self.llm_config.model}")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ? <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
|
|
|||
|
|
1. **<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>**<2A><>ͳһ<CDB3><D2BB><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><F2BBB7BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|||
|
|
2. **<EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>**<2A><>`config/llm_config.py` <20>е<EFBFBD> `DEFAULT_CONFIG`
|
|||
|
|
3. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ**<2A><><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
|||
|
|
|
|||
|
|
## ? <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
### <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>
|
|||
|
|
|
|||
|
|
ֱ<EFBFBD>ӱ༭ `config/llm_config.py`<EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>ģ<EFBFBD>ͣ<EFBFBD>
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
QWEN_CONFIG = LLMConfig(
|
|||
|
|
provider="qwen",
|
|||
|
|
api_key="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<50><49>Կ", # <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
model="qwen-max", # <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
|
...
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### <20><><EFBFBD><EFBFBD>2<EFBFBD><32>ͨ<EFBFBD><CDA8>ͳһ<CDB3><D2BB><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
|
|||
|
|
<EFBFBD>༭ `config/unified_config.json`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"llm": {
|
|||
|
|
"provider": "qwen",
|
|||
|
|
"api_key": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<50><49>Կ",
|
|||
|
|
"model": "qwen-plus-latest",
|
|||
|
|
...
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### <20><><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
export LLM_API_KEY="<22><><EFBFBD><EFBFBD>API<50><49>Կ"
|
|||
|
|
export LLM_MODEL="qwen-plus-latest"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ? <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
1. **<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ**<2A><>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD><D2AA> `config/llm_config.py` <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
|
2. **ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>鶼ͨ<EFBFBD><EFBFBD>ͳһ<EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
|
|||
|
|
3. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>**<2A><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>Ҫ<EFBFBD>Ķദ<C4B6><E0B4A6><EFBFBD><EFBFBD>
|
|||
|
|
4. **<EFBFBD>Զ<EFBFBD>ͬ<EFBFBD><EFBFBD>**<2A><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>õĵط<C4B5><D8B7>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
5. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fallback<63><6B><EFBFBD>ƣ<EFBFBD>ȷ<EFBFBD><C8B7>ϵͳ<CFB5>ȶ<EFBFBD><C8B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
## ? <20>Ѹ<EFBFBD><D1B8>µ<EFBFBD><C2B5>ļ<EFBFBD>
|
|||
|
|
|
|||
|
|
- ? `config/llm_config.py` - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> `get_default_llm_config()` <20><><EFBFBD><EFBFBD>
|
|||
|
|
- ? `src/config/unified_config.py` - <20><> `config/llm_config.py` <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
- ? `src/integrations/ai_suggestion_service.py` - ʹ<><CAB9>ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>
|
|||
|
|
- ? `src/agent/agent_assistant_core.py` - ʹ<><CAB9>ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
## ? ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
- **<2A><>Ҫ**<2A>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>OpenAI<41><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
- **<2A><>Ҫ**ֱ<>Ӵ<EFBFBD> `config/llm_config.py` <20><><EFBFBD>루<EFBFBD><EBA3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊfallback<63><6B>
|
|||
|
|
- **<2A><><EFBFBD><EFBFBD>**ͨ<><CDA8> `get_config().llm` <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
- <20><EFBFBD><DEB8><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
|||
|
|
|