初始化

This commit is contained in:
2026-05-11 11:22:55 +08:00
parent 5f6c571434
commit 80dcd070f7
39 changed files with 1997 additions and 0 deletions

58
app/services/llm.py Normal file
View File

@@ -0,0 +1,58 @@
import dashscope
from dashscope import Generation
from typing import AsyncGenerator, Optional, Generator
class LLMService:
def __init__(self):
from app.core.config import settings
self.model = settings.llm_model
dashscope.api_key = settings.dashscope_api_key
def generate_stream(
self,
prompt: str,
system_prompt: Optional[str] = None,
) -> Generator[str, None, None]:
"""流式生成文本"""
messages = []
if system_prompt:
messages.append({"role": "system", "content": system_prompt})
messages.append({"role": "user", "content": prompt})
responses = Generation.call(
model=self.model,
messages=messages,
result_format="message",
stream=True,
)
for response in responses:
if response.status_code == 200:
content = response.output.choices[0].message.content
if content:
yield content
async def generate(
self,
prompt: str,
system_prompt: Optional[str] = None,
) -> str:
"""一次性生成文本"""
messages = []
if system_prompt:
messages.append({"role": "system", "content": system_prompt})
messages.append({"role": "user", "content": prompt})
response = Generation.call(
model=self.model,
messages=messages,
result_format="message",
)
if response.status_code == 200:
return response.output.choices[0].message.content
raise Exception(f"LLM generation failed: {response.code}")
llm_service = LLMService()