FIN_ASSISTANT / comparer.py
QAway-to
model change
00ddeb7
raw
history blame
1.59 kB
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