Spaces:
Running
Running
File size: 1,456 Bytes
4381f6e 057fb7e b58afd7 a1ca5ac c373fe4 e545578 06e5903 e63adc7 bd902db e63adc7 380268b 06e5903 aab93e8 06e5903 c3841c4 06e5903 f4f3f95 e63adc7 23af882 e63adc7 4fdc68b e63adc7 8219948 e63adc7 06e5903 |
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 |
from prompts import TEST1
from fetch import extract_portfolio_id, fetch_metrics_async
from useCasesReferences import REFERENCE_PROMPT
from openai import OpenAI
import asyncio
def analyze_portfolio_streaming(text: str, client: OpenAI):
portfolio_id = extract_portfolio_id(text)
if not portfolio_id:
yield "❗ Укажите корректный portfolioId или ссылку."
return
yield "⏳ Загружаю метрики портфеля..."
metrics = asyncio.run(fetch_metrics_async(portfolio_id))
if not metrics:
yield "❗ Не удалось получить метрики портфеля."
return
metrics_text = ", ".join([f"{k}: {v}" for k, v in metrics.items()])
prompt = f"{REFERENCE_PROMPT} используй этот промпт для анализа:{metrics_text}"
try:
response_llm = client.chat.completions.create(
model="meta-llama/Meta-Llama-3.1-8B-Instruct",
messages=[
{"role": "system", "content": TEST1},
{"role": "user", "content": prompt}
],
stream=True
)
partial = ""
for chunk in response_llm:
delta = chunk.choices[0].delta.content
if delta:
partial += delta
yield partial
except Exception as e:
yield f"❌ Ошибка при генерации ответа: {e}"
|