File size: 6,708 Bytes
58cec34 2839144 d7f0eff 3c7d3b0 86f3bf2 58cec34 d7f0eff 3c7d3b0 d7f0eff 3c7d3b0 d7f0eff 3c7d3b0 d7f0eff 3c7d3b0 d7f0eff 3c7d3b0 74e8d5b 2455e56 74e8d5b 2455e56 74e8d5b 3c7d3b0 2455e56 74e8d5b 2455e56 74e8d5b 2455e56 74e8d5b d7f0eff 74e8d5b d7f0eff 74e8d5b 2455e56 74e8d5b 2839144 74e8d5b 2455e56 74e8d5b 2455e56 74e8d5b 2455e56 74e8d5b d7f0eff 74e8d5b 2839144 d7f0eff 2839144 d7f0eff 2839144 3c7d3b0 d7f0eff 3c7d3b0 d7f0eff |
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 |
#!/usr/bin/env python3
import os
import subprocess
import sys
import time
from pathlib import Path
import signal
import shutil
def main():
processes = []
try:
# Пути к исполняемым файлам
api_binary = Path("/app/server/bin/api")
playground_dir = Path("/app/playground")
# Проверяем существование файлов
if not api_binary.exists():
print(f"ERROR: API binary not found at {api_binary}", file=sys.stderr)
return 1
if not playground_dir.exists():
print(f"ERROR: Playground directory not found at {playground_dir}", file=sys.stderr)
return 1
# Создаем директорию для логов
os.makedirs("/tmp/ten_agent", exist_ok=True)
# Запускаем API сервер
print("Starting TEN-Agent API server on port 8080...")
api_server_env = os.environ.copy()
api_server_env["LOG_PATH"] = "/tmp/ten_agent"
api_server_env["LOG_STDOUT"] = "true"
api_server_process = subprocess.Popen([str(api_binary)], env=api_server_env)
processes.append(api_server_process)
# Даем время API серверу запуститься
time.sleep(5)
# Запускаем Playground UI
print("Starting Playground UI on port 3000...")
playground_env = os.environ.copy()
playground_env["AGENT_SERVER_URL"] = "http://localhost:8080" # Подключаемся к локальному API серверу
# Исправляем параметры командной строки для Next.js
playground_process = subprocess.Popen(
["pnpm", "start", "--", "--port", "3000"],
cwd=str(playground_dir),
env=playground_env
)
processes.append(playground_process)
# Даем время Playground UI запуститься
time.sleep(5)
# Запускаем простую HTML страницу для Hugging Face
from http.server import HTTPServer, SimpleHTTPRequestHandler
class SimpleHandler(SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html; charset=utf-8')
self.end_headers()
html_content = """
<!DOCTYPE html>
<html>
<head>
<title>TEN Agent - Hugging Face Space</title>
<meta charset="utf-8">
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; max-width: 800px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
.info { background: #f8f9fa; border-left: 4px solid #28a745; padding: 15px; margin-bottom: 20px; }
.warning { background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin-bottom: 20px; }
.endpoint { background: #e9ecef; padding: 10px; border-radius: 5px; font-family: monospace; }
.api { margin-top: 30px; }
</style>
</head>
<body>
<h1>TEN Agent запущен успешно!</h1>
<div class="info">
<p>TEN Agent API сервер работает на порту 8080.</p>
<p>Playground UI запущен на порту 3000.</p>
</div>
<div class="warning">
<p><strong>Внимание:</strong> Из-за ограничений Hugging Face Space, доступ к интерфейсу через прокси может быть нестабильным.</p>
</div>
<div class="api">
<h2>API эндпоинты:</h2>
<ul>
<li>API сервер: <span class="endpoint">http://localhost:8080</span></li>
<li>Playground UI: <span class="endpoint">http://localhost:3000</span></li>
</ul>
</div>
<h2>Инструкция по локальному использованию</h2>
<p>Для наилучшего опыта, подключите локальный Playground к этому API:</p>
<ol>
<li>Клонируйте репозиторий: <code>git clone https://github.com/TEN-framework/TEN-Agent.git</code></li>
<li>Перейдите в директорию playground: <code>cd TEN-Agent/playground</code></li>
<li>Установите зависимости: <code>pnpm install</code></li>
<li>Запустите Playground с подключением к API: <code>AGENT_SERVER_URL=https://nitrox-ten.hf.space pnpm dev</code></li>
<li>Откройте в браузере: <code>http://localhost:3000</code></li>
</ol>
<p>См. <a href="https://github.com/TEN-framework/TEN-Agent" target="_blank">документацию TEN Agent</a> для получения дополнительной информации.</p>
</body>
</html>
"""
self.wfile.write(html_content.encode('utf-8'))
# Запускаем HTTP сервер
port = 7860 # Hugging Face Space обычно ожидает сервер на порту 7860
print(f"Starting HTTP server on port {port}...")
httpd = HTTPServer(('0.0.0.0', port), SimpleHandler)
httpd.serve_forever()
except KeyboardInterrupt:
print("Shutting down...")
finally:
# Завершаем все процессы при выходе
for proc in processes:
try:
proc.terminate()
proc.wait(timeout=5)
except:
proc.kill()
return 0
if __name__ == "__main__":
# Корректная обработка сигналов завершения
signal.signal(signal.SIGINT, lambda sig, frame: sys.exit(0))
signal.signal(signal.SIGTERM, lambda sig, frame: sys.exit(0))
sys.exit(main()) |