File size: 6,077 Bytes
58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 58cec34 57b5794 |
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
#!/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) |