Spaces:
Sleeping
Sleeping
File size: 1,997 Bytes
0d80e79 e631111 00ddeb7 a1ca5ac 0d80e79 00ddeb7 0d80e79 ceee2e5 00ddeb7 d494c47 00ddeb7 0d80e79 00ddeb7 a1ca5ac 00ddeb7 0d80e79 b678d7e 0d80e79 a39e805 0d80e79 |
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 |
import asyncio
from fetch import extract_portfolio_id, fetch_metrics_async
from prompts import TEST1
from openai import OpenAI
from useCasesReferences import REFERENCE_COMPARISON_PROMPT
# Сравнение двух портфелей
def compare_portfolio(text1: str, text2: str, client: OpenAI):
id1 = extract_portfolio_id(text1)
id2 = extract_portfolio_id(text2)
if text2 == text1:
yield "❗ Пожалуйста, укажите два разных portfolioId для сравнения."
return
if not id1 or not id2:
yield "❗ Один или оба portfolioId некорректны!"
return
try:
# Асинхронное получение метрик
m1 = asyncio.run(fetch_metrics_async(id1))
m2 = asyncio.run(fetch_metrics_async(id2))
except Exception as e:
yield f"❌ Ошибка при получении данных: {e}"
return
if not m1 or not m2:
yield "❗ Не удалось получить метрики одного из портфелей."
return
m1_text = ", ".join([f"{k}: {v}" for k, v in m1.items()])
m2_text = ", ".join([f"{k}: {v}" for k, v in m2.items()])
prompt= f"{REFERENCE_COMPARISON_PROMPT} используй этот промпт для сравнения:Потрфель 'А'{m1_text}Портфель 'Б': {m2_text}"
try:
response = 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:
delta = chunk.choices[0].delta.content
if delta:
partial += delta
yield partial
except Exception as e:
yield f"❌ Ошибка при обработке запроса LLM: {e}"
|