QAway-to commited on
Commit
08babaa
·
1 Parent(s): 8cdd5cd

without k_metrics

Browse files
Files changed (1) hide show
  1. app.py +49 -48
app.py CHANGED
@@ -3,6 +3,7 @@ import requests
3
  import re
4
  import os
5
  from analyzer import analyze_portfolio_streaming
 
6
  from fetch import fetch_metrics
7
  from openai import OpenAI
8
 
@@ -119,54 +120,54 @@ def extract_portfolio_id(text: str) -> str | None:
119
  # partial += delta
120
  # yield partial
121
 
122
- #Анализ одного портфеля
123
- def analyze_portfolio_streaming(text: str):
124
- portfolio_id = extract_portfolio_id(text)
125
- if not portfolio_id:
126
- yield "❗ Укажите корректный portfolioId или ссылку."
127
- return
128
-
129
- try:
130
- # Получение JSON по API
131
- url = f"https://api.tradelink.pro/portfolio/get?portfolioId={portfolio_id}&extended=1&declaration=1&step=day&lang=en&incViews=1"
132
- response = requests.get(url)
133
- json_data = response.json()
134
- extended = json_data.get("data", {}).get("extended", {})
135
-
136
- if not extended:
137
- yield "❗ Метрики не найдены в ответе API."
138
- return
139
-
140
- # Передаём все числовые метрики, без фильтрации
141
- metrics = {k: v for k, v in extended.items() if isinstance(v, (int, float))}
142
- if not metrics:
143
- yield "❗ Нет числовых метрик для анализа."
144
- return
145
-
146
- metrics_text = ", ".join([f"{k}: {v}" for k, v in metrics.items()])
147
- prompt = f"""Вот метрики портфеля: {metrics_text}.
148
- Проанализируй их и объясни сильные и слабые стороны на русском языке, как финансовый аналитик."""
149
-
150
- # Запрос к модели
151
- response_llm = client.chat.completions.create(
152
- model="nasiruddin15/Mistral-dolphin-2.8-grok-instract-2-7B-slerp",
153
- messages=[
154
- {"role": "system", "content": SYSTEM_PROMPT},
155
- {"role": "user", "content": prompt}
156
- ],
157
- stream=True
158
- )
159
-
160
- partial = ""
161
- for chunk in response_llm:
162
- delta = chunk.choices[0].delta.content
163
- if delta:
164
- partial += delta
165
- yield partial
166
-
167
- except Exception as e:
168
- yield f"❌ Ошибка при обработке: {e}"
169
-
170
 
171
  # Сравнение двух портфелей
172
  def compare_portfolios_streaming(text1: str, text2: str):
 
3
  import re
4
  import os
5
  from analyzer import analyze_portfolio_streaming
6
+ from fetch import extract_portfolio_id
7
  from fetch import fetch_metrics
8
  from openai import OpenAI
9
 
 
120
  # partial += delta
121
  # yield partial
122
 
123
+ # #Анализ одного портфеля
124
+ # def analyze_portfolio_streaming(text: str):
125
+ # portfolio_id = extract_portfolio_id(text)
126
+ # if not portfolio_id:
127
+ # yield "❗ Укажите корректный portfolioId или ссылку."
128
+ # return
129
+ #
130
+ # try:
131
+ # # Получение JSON по API
132
+ # url = f"https://api.tradelink.pro/portfolio/get?portfolioId={portfolio_id}&extended=1&declaration=1&step=day&lang=en&incViews=1"
133
+ # response = requests.get(url)
134
+ # json_data = response.json()
135
+ # extended = json_data.get("data", {}).get("extended", {})
136
+ #
137
+ # if not extended:
138
+ # yield "❗ Метрики не найдены в ответе API."
139
+ # return
140
+ #
141
+ # # Передаём все числовые метрики, без фильтрации
142
+ # metrics = {k: v for k, v in extended.items() if isinstance(v, (int, float))}
143
+ # if not metrics:
144
+ # yield "❗ Нет числовых метрик для анализа."
145
+ # return
146
+ #
147
+ # metrics_text = ", ".join([f"{k}: {v}" for k, v in metrics.items()])
148
+ # prompt = f"""Вот метрики портфеля: {metrics_text}.
149
+ # Проанализируй их и объясни сильные и слабые стороны на русском языке, как финансовый аналитик."""
150
+ #
151
+ # # Запрос к модели
152
+ # response_llm = client.chat.completions.create(
153
+ # model="nasiruddin15/Mistral-dolphin-2.8-grok-instract-2-7B-slerp",
154
+ # messages=[
155
+ # {"role": "system", "content": SYSTEM_PROMPT},
156
+ # {"role": "user", "content": prompt}
157
+ # ],
158
+ # stream=True
159
+ # )
160
+ #
161
+ # partial = ""
162
+ # for chunk in response_llm:
163
+ # delta = chunk.choices[0].delta.content
164
+ # if delta:
165
+ # partial += delta
166
+ # yield partial
167
+ #
168
+ # except Exception as e:
169
+ # yield f"❌ Ошибка при обработке: {e}"
170
+ #
171
 
172
  # Сравнение двух портфелей
173
  def compare_portfolios_streaming(text1: str, text2: str):