Spaces:
Sleeping
Sleeping
| from fetch import extract_portfolio_id | |
| from fetch import fetch_metrics | |
| from prompts import SYSTEM_PROMPT | |
| from openai import OpenAI | |
| # Сравнение двух портфелей | |
| def compare_portfolio(text1: str, text2: str, client: OpenAI): | |
| id1 = extract_portfolio_id(text1) | |
| id2 = extract_portfolio_id(text2) | |
| if not id1 or not id2: | |
| yield "❗ Один или оба portfolioId некорректны." | |
| return | |
| m1 = fetch_metrics(id1) | |
| m2 = fetch_metrics(id2) | |
| 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"""Сравни два инвестиционных портфеля: | |
| Портфель 1: {m1_text} | |
| Портфель 2: {m2_text} | |
| Сделай сравнительный анализ на русском языке как финансовый аналитик. Укажи, какой портфель сильнее, в чём риски, где преимущества.""" | |
| response = client.chat.completions.create( | |
| model="meta-llama/Meta-Llama-3.1-8B-Instruct", | |
| messages=[ | |
| {"role": "system", "content": SYSTEM_PROMPT}, | |
| {"role": "user", "content": prompt} | |
| ], | |
| stream=True | |
| ) | |
| partial = "" | |
| for chunk in response: | |
| delta = chunk.choices[0].delta.content | |
| if delta: | |
| partial += delta | |
| yield partial |