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