Spaces:
Sleeping
Sleeping
QAway-to
commited on
Commit
·
e545578
1
Parent(s):
96370c5
without k_metrics
Browse files- analyzer.py +2 -3
- app.py +0 -51
analyzer.py
CHANGED
|
@@ -1,11 +1,10 @@
|
|
| 1 |
# Анализ одного портфеля
|
| 2 |
import requests
|
| 3 |
from fetch import extract_portfolio_id
|
| 4 |
-
|
| 5 |
-
|
| 6 |
from prompts import SYSTEM_PROMPT
|
|
|
|
| 7 |
|
| 8 |
-
def analyze_portfolio_streaming(text: str, client):
|
| 9 |
portfolio_id = extract_portfolio_id(text)
|
| 10 |
if not portfolio_id:
|
| 11 |
yield "❗ Укажите корректный portfolioId или ссылку."
|
|
|
|
| 1 |
# Анализ одного портфеля
|
| 2 |
import requests
|
| 3 |
from fetch import extract_portfolio_id
|
|
|
|
|
|
|
| 4 |
from prompts import SYSTEM_PROMPT
|
| 5 |
+
from openai import OpenAI
|
| 6 |
|
| 7 |
+
def analyze_portfolio_streaming(text: str, client:OpenAI):
|
| 8 |
portfolio_id = extract_portfolio_id(text)
|
| 9 |
if not portfolio_id:
|
| 10 |
yield "❗ Укажите корректный portfolioId или ссылку."
|
app.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
| 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
|
|
@@ -15,56 +14,6 @@ client = OpenAI(
|
|
| 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)
|
|
|
|
| 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
|
|
|
|
| 14 |
)
|
| 15 |
|
| 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
# Сравнение двух портфелей
|
| 18 |
def compare_portfolios_streaming(text1: str, text2: str):
|
| 19 |
id1 = extract_portfolio_id(text1)
|