File size: 1,593 Bytes
00ddeb7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 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