Spaces:
Sleeping
Sleeping
File size: 2,054 Bytes
e63adc7 fe31096 bd902db e545578 fe31096 e545578 e63adc7 bd902db e63adc7 380268b f4f3f95 e63adc7 bd902db f4f3f95 e63adc7 f4f3f95 e63adc7 f4f3f95 e63adc7 f4f3f95 e63adc7 f24b05a f4f3f95 e63adc7 23af882 e63adc7 bd902db e63adc7 a928dd2 e63adc7 |
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 45 46 47 48 49 50 51 52 |
# Анализ одного портфеля
import requests
from fetch import extract_portfolio_id
from prompts import ONE_PROMPT
from openai import OpenAI
def analyze_portfolio_streaming(text: str, client:OpenAI):
portfolio_id = extract_portfolio_id(text)
if not portfolio_id:
yield "❗ Укажите корректный portfolioId или ссылку."
return
try:
# Получение JSON по API
url = f"https://api.tradelink.pro/portfolio/get?portfolioId={portfolio_id}&extended=1&declaration=1&step=day&lang=en&incViews=1"
response = requests.get(url)
json_data = response.json()
extended = json_data.get("data", {}).get("extended", {})
if not extended:
yield "❗ Метрики не найдены в ответе API."
return
# Передаём все числовые метрики, без фильтрации
metrics = {k: v for k, v in extended.items() if isinstance(v, (int, float))}
if not metrics:
yield "❗ Нет числовых метрик для анализа."
return
metrics_text = ", ".join([f"{k}: {v}" for k, v in metrics.items()])
prompt = f"Вот метрики портфеля: {metrics_text}. Проанализируй их. Дай общий отчёт на русском языке"
# Запрос к модели
response_llm = client.chat.completions.create(
# model="nasiruddin15/Mistral-dolphin-2.8-grok-instract-2-7B-slerp",
model="meta-llama/Meta-Llama-3.1-8B-Instruct",
messages=[
{"role": "system", "content": ONE_PROMPT},
{"role": "user", "content": prompt}
],
stream=True
)
partial = ""
for chunk in response_llm:
if (delta := chunk.choices[0].delta.content):
yield delta
except Exception as e:
yield f"❌ Ошибка при обработке: {e}"
|