QAway-to commited on
Commit
96370c5
·
1 Parent(s): 9e0b522

without k_metrics

Browse files
Files changed (2) hide show
  1. analyzer.py +1 -1
  2. app.py +53 -1
analyzer.py CHANGED
@@ -1,7 +1,7 @@
1
  # Анализ одного портфеля
2
  import requests
3
  from fetch import extract_portfolio_id
4
- from openai import OpenAI
5
 
6
  from prompts import SYSTEM_PROMPT
7
 
 
1
  # Анализ одного портфеля
2
  import requests
3
  from fetch import extract_portfolio_id
4
+
5
 
6
  from prompts import SYSTEM_PROMPT
7
 
app.py CHANGED
@@ -1,11 +1,12 @@
1
  import gradio as gr
2
  import os
 
3
  from prompts import SYSTEM_PROMPT
4
  from prompts import TRADELINK_CONTEXT
5
  from fetch import extract_portfolio_id
6
  from fetch import fetch_metrics
7
  from openai import OpenAI
8
- from analyzer import analyze_portfolio_streaming
9
 
10
  api_key = os.getenv("featherless") #
11
  client = OpenAI(
@@ -13,6 +14,57 @@ client = OpenAI(
13
  api_key=api_key
14
  )
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  # Сравнение двух портфелей
17
  def compare_portfolios_streaming(text1: str, text2: str):
18
  id1 = extract_portfolio_id(text1)
 
1
  import gradio as gr
2
  import os
3
+ import requests
4
  from prompts import SYSTEM_PROMPT
5
  from prompts import TRADELINK_CONTEXT
6
  from fetch import extract_portfolio_id
7
  from fetch import fetch_metrics
8
  from openai import OpenAI
9
+ # from analyzer import analyze_portfolio_streaming
10
 
11
  api_key = os.getenv("featherless") #
12
  client = OpenAI(
 
14
  api_key=api_key
15
  )
16
 
17
+
18
+ from prompts import SYSTEM_PROMPT
19
+
20
+ def analyze_portfolio_streaming(text: str, client):
21
+ portfolio_id = extract_portfolio_id(text)
22
+ if not portfolio_id:
23
+ yield "❗ Укажите корректный portfolioId или ссылку."
24
+ return
25
+
26
+ try:
27
+ # Получение JSON по API
28
+ url = f"https://api.tradelink.pro/portfolio/get?portfolioId={portfolio_id}&extended=1&declaration=1&step=day&lang=en&incViews=1"
29
+ response = requests.get(url)
30
+ json_data = response.json()
31
+ extended = json_data.get("data", {}).get("extended", {})
32
+
33
+ if not extended:
34
+ yield "❗ Метрики не найдены в ответе API."
35
+ return
36
+
37
+ # Передаём все числовые метрики, без фильтрации
38
+ metrics = {k: v for k, v in extended.items() if isinstance(v, (int, float))}
39
+ if not metrics:
40
+ yield "❗ Нет числовых метрик для анализа."
41
+ return
42
+
43
+ metrics_text = ", ".join([f"{k}: {v}" for k, v in metrics.items()])
44
+ prompt = f"""Вот метрики портфеля: {metrics_text}.
45
+ Проанализируй их и объясни сильные и слабые стороны на русском языке, как финансовый аналитик."""
46
+
47
+ # Запрос к модели
48
+ response_llm = client.chat.completions.create(
49
+ model="nasiruddin15/Mistral-dolphin-2.8-grok-instract-2-7B-slerp",
50
+ messages=[
51
+ {"role": "system", "content": SYSTEM_PROMPT},
52
+ {"role": "user", "content": prompt}
53
+ ],
54
+ stream=True
55
+ )
56
+
57
+ partial = ""
58
+ for chunk in response_llm:
59
+ delta = chunk.choices[0].delta.content
60
+ if delta:
61
+ partial += delta
62
+ yield partial
63
+
64
+ except Exception as e:
65
+ yield f"❌ Ошибка при обработке: {e}"
66
+
67
+
68
  # Сравнение двух портфелей
69
  def compare_portfolios_streaming(text1: str, text2: str):
70
  id1 = extract_portfolio_id(text1)