Spaces:
Sleeping
Sleeping
File size: 2,061 Bytes
e63adc7 fe31096 bd902db e545578 fe31096 e545578 e63adc7 bd902db e63adc7 380268b f4f3f95 e63adc7 4663f88 f4f3f95 e63adc7 f4f3f95 e63adc7 f4f3f95 e63adc7 f4f3f95 e63adc7 f24b05a f4f3f95 e63adc7 23af882 e63adc7 bd902db e63adc7 8219948 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 53 |
# Анализ одного портфеля
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"
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:
delta = chunk.choices[0].delta.content
if delta:
partial += delta
yield partial
except Exception as e:
yield f"❌ Ошибка при обработке: {e}"
|