ten / app.py
3v324v23's picture
Упрощённая версия TEN Agent для Hugging Face с использованием Flask
57b5794
raw
history blame
6.08 kB
#!/usr/bin/env python3
import os
import requests
from flask import Flask, render_template_string, send_from_directory, redirect, url_for, jsonify
# Порт для Hugging Face Spaces
HF_PORT = int(os.environ.get("PORT", 7860))
# Создаем Flask приложение
app = Flask(__name__, static_folder='info')
# HTML шаблон для главной страницы
index_html = """
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TEN Agent на Hugging Face</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
line-height: 1.6;
}
h1, h2 {
color: #2563eb;
}
pre {
background-color: #f1f5f9;
padding: 15px;
border-radius: 5px;
overflow-x: auto;
}
.card {
border: 1px solid #e5e7eb;
border-radius: 8px;
padding: 15px;
margin-bottom: 20px;
background-color: #fff;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
.btn {
display: inline-block;
padding: 8px 16px;
background-color: #2563eb;
color: white;
text-decoration: none;
border-radius: 4px;
margin-top: 10px;
}
.btn:hover {
background-color: #1d4ed8;
}
.container {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.feature {
flex: 1 1 300px;
border: 1px solid #e5e7eb;
border-radius: 8px;
padding: 15px;
background-color: #f8fafc;
}
</style>
</head>
<body>
<h1>TEN Agent на Hugging Face</h1>
<div class="card">
<h2>О проекте</h2>
<p>TEN Agent - это разговорный голосовой ИИ-агент на базе TEN, интегрирующий Deepseek, Gemini, OpenAI, RTC и аппаратное обеспечение. Он обеспечивает возможности ИИ в реальном времени, такие как видение, слух и речь.</p>
</div>
<h2>Основные функции</h2>
<div class="container">
<div class="feature">
<h3>Голосовой помощник</h3>
<p>Создайте полнофункционального голосового помощника с возможностью реагировать на ваши запросы в реальном времени.</p>
</div>
<div class="feature">
<h3>Интеграция с Dify и RAG</h3>
<p>Интеграция с Dify для создания агентов с возможностями поиска и извлечения информации (RAG).</p>
</div>
<div class="feature">
<h3>Gemini Multimodal</h3>
<p>Поддержка Gemini Multimodal API с возможностями зрения и распознавания изображений экрана в реальном времени.</p>
</div>
</div>
<h2>Документация</h2>
<p>Для полноценной работы с TEN Agent, пожалуйста, обратитесь к официальной документации:</p>
<ul>
<li><a href="https://doc.theten.ai/ten-agent/overview" target="_blank">Обзор TEN Agent</a></li>
<li><a href="https://doc.theten.ai/ten-agent/getting_started" target="_blank">Начало работы</a></li>
<li><a href="https://github.com/TEN-framework/TEN-Agent" target="_blank">Репозиторий GitHub</a></li>
</ul>
<h2>API</h2>
<p>Для взаимодействия с API TEN Agent через Hugging Face Spaces:</p>
<pre>GET /api/info - Получить информацию о TEN Agent</pre>
<a href="/api/info" class="btn">Проверить API</a>
</body>
</html>
"""
@app.route('/')
def index():
"""Главная страница"""
return render_template_string(index_html)
@app.route('/api/info')
def api_info():
"""API для получения информации о TEN Agent"""
return jsonify({
"name": "TEN Agent",
"version": "0.8.0",
"description": "Разговорный голосовой ИИ-агент с возможностями видения, слуха и речи.",
"documentation": "https://doc.theten.ai/ten-agent/overview",
"repository": "https://github.com/TEN-framework/TEN-Agent",
"features": [
"Голосовой помощник",
"Интеграция с Dify и RAG",
"Поддержка Gemini Multimodal API",
"Рассказчик историй с генерацией изображений",
"Интеграция с ESP32 для аппаратных решений"
]
})
@app.route('/static/<path:path>')
def serve_static(path):
"""Обслуживание статических файлов"""
return send_from_directory('info', path)
if __name__ == '__main__':
# Получаем информацию о TEN Agent с GitHub для актуализации данных
try:
github_url = "https://api.github.com/repos/TEN-framework/TEN-Agent"
repo_info = requests.get(github_url).json()
print(f"TEN Agent на GitHub: {repo_info.get('stargazers_count', '?')} звезд")
except Exception as e:
print(f"Не удалось получить информацию с GitHub: {e}")
# Запускаем веб-сервер
print(f"Запуск веб-сервера на порту {HF_PORT}...")
app.run(host='0.0.0.0', port=HF_PORT)