3v324v23 commited on
Commit
50c3ed9
·
1 Parent(s): dbc3350

Исправление проблемы с правами доступа в контейнере и добавление fallback-скрипта

Browse files
Files changed (3) hide show
  1. Dockerfile +13 -2
  2. fallback.py +161 -0
  3. start.sh +53 -10
Dockerfile CHANGED
@@ -55,9 +55,20 @@ RUN echo "\
55
  OPENAI_API_KEY=${OPENAI_API_KEY}\n\
56
  " > /app/.env
57
 
58
- # Создаем стартовый скрипт для запуска на Hugging Face
 
 
 
 
 
 
 
 
 
 
59
  COPY start.sh /app/start.sh
60
- RUN chmod +x /app/start.sh
 
61
 
62
  # Открываем порты (7860 для HF Space, 8080 для API, 49483 для дизайнера)
63
  EXPOSE 7860 8080 49483 3000 3001 3002
 
55
  OPENAI_API_KEY=${OPENAI_API_KEY}\n\
56
  " > /app/.env
57
 
58
+ # Установка правильных прав доступа для директорий и файлов
59
+ RUN mkdir -p /app/agents && \
60
+ chmod -R 777 /app/agents && \
61
+ chmod -R 777 /app && \
62
+ mkdir -p /tmp/ten_agent && \
63
+ chmod -R 777 /tmp/ten_agent
64
+
65
+ # Создаем необходимые директории для установки сервера
66
+ RUN mkdir -p /app/server/bin && chmod -R 777 /app/server/bin
67
+
68
+ # Копируем стартовые скрипты
69
  COPY start.sh /app/start.sh
70
+ COPY fallback.py /app/fallback.py
71
+ RUN chmod +x /app/start.sh /app/fallback.py
72
 
73
  # Открываем порты (7860 для HF Space, 8080 для API, 49483 для дизайнера)
74
  EXPOSE 7860 8080 49483 3000 3001 3002
fallback.py ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ import os
3
+ import json
4
+ import shutil
5
+ import subprocess
6
+ import sys
7
+ import time
8
+ from pathlib import Path
9
+
10
+ def create_basic_files():
11
+ """Создает базовые файлы конфигурации для TEN-Agent"""
12
+ print("Creating basic configuration files...")
13
+
14
+ # Создаем директории
15
+ agents_dir = Path("/app/agents")
16
+ agents_dir.mkdir(exist_ok=True)
17
+
18
+ # Создаем manifest.json
19
+ manifest = {
20
+ "_ten": {"version": "0.0.1"},
21
+ "name": "default",
22
+ "agents": [
23
+ {
24
+ "name": "voice_agent",
25
+ "description": "A simple voice agent",
26
+ "type": "voice"
27
+ },
28
+ {
29
+ "name": "chat_agent",
30
+ "description": "A text chat agent",
31
+ "type": "chat"
32
+ }
33
+ ]
34
+ }
35
+
36
+ with open(agents_dir / "manifest.json", "w") as f:
37
+ json.dump(manifest, f, indent=2)
38
+
39
+ # Создаем property.json
40
+ property_data = {
41
+ "name": "TEN Agent Example",
42
+ "version": "0.0.1",
43
+ "extensions": ["openai_chatgpt"],
44
+ "description": "A basic voice agent with OpenAI",
45
+ "graphs": [
46
+ {
47
+ "name": "Voice Agent",
48
+ "description": "Basic voice agent with OpenAI",
49
+ "file": "voice_agent.json"
50
+ },
51
+ {
52
+ "name": "Chat Agent",
53
+ "description": "Simple chat agent",
54
+ "file": "chat_agent.json"
55
+ }
56
+ ]
57
+ }
58
+
59
+ with open(agents_dir / "property.json", "w") as f:
60
+ json.dump(property_data, f, indent=2)
61
+
62
+ # Создаем voice_agent.json
63
+ voice_agent = {
64
+ "_ten": {"version": "0.0.1"},
65
+ "nodes": [
66
+ {
67
+ "id": "start",
68
+ "type": "start",
69
+ "data": {"x": 100, "y": 100}
70
+ },
71
+ {
72
+ "id": "openai_chatgpt",
73
+ "type": "openai_chatgpt",
74
+ "data": {
75
+ "x": 300,
76
+ "y": 200,
77
+ "properties": {
78
+ "model": "gpt-3.5-turbo",
79
+ "temperature": 0.7,
80
+ "system_prompt": "You are a helpful assistant."
81
+ }
82
+ }
83
+ },
84
+ {
85
+ "id": "end",
86
+ "type": "end",
87
+ "data": {"x": 500, "y": 100}
88
+ }
89
+ ],
90
+ "edges": [
91
+ {
92
+ "id": "start_to_chatgpt",
93
+ "source": "start",
94
+ "target": "openai_chatgpt"
95
+ },
96
+ {
97
+ "id": "chatgpt_to_end",
98
+ "source": "openai_chatgpt",
99
+ "target": "end"
100
+ }
101
+ ],
102
+ "groups": [],
103
+ "templates": [],
104
+ "root": "start"
105
+ }
106
+
107
+ with open(agents_dir / "voice_agent.json", "w") as f:
108
+ json.dump(voice_agent, f, indent=2)
109
+
110
+ # Создаем chat_agent.json (аналогичный voice_agent.json)
111
+ chat_agent = voice_agent.copy()
112
+ chat_agent["nodes"][1]["data"]["properties"]["system_prompt"] = "You are a helpful chat assistant."
113
+
114
+ with open(agents_dir / "chat_agent.json", "w") as f:
115
+ json.dump(chat_agent, f, indent=2)
116
+
117
+ print("Basic configuration files created successfully.")
118
+
119
+ def main():
120
+ try:
121
+ # Устанавливаем права доступа
122
+ subprocess.run(["chmod", "-R", "777", "/app"], check=True)
123
+ subprocess.run(["chmod", "-R", "777", "/app/agents"], check=True)
124
+
125
+ # Создаем базовые файлы
126
+ create_basic_files()
127
+
128
+ # Проверяем, скомпилирован ли API сервер
129
+ server_binary = Path("/app/server/bin/api")
130
+ if not server_binary.exists():
131
+ print("Compiling API server...")
132
+ subprocess.run(["cd", "/app/server", "&&", "go", "build", "-o", "bin/api", "main.go"], check=True)
133
+ subprocess.run(["chmod", "+x", "/app/server/bin/api"], check=True)
134
+
135
+ # Запускаем API сервер
136
+ api_process = subprocess.Popen(["/app/server/bin/api"])
137
+
138
+ # Запускаем playground
139
+ os.environ["PORT"] = "7860"
140
+ os.environ["AGENT_SERVER_URL"] = "http://localhost:8080"
141
+ os.environ["NEXT_PUBLIC_EDIT_GRAPH_MODE"] = "true"
142
+ os.environ["NEXT_PUBLIC_DISABLE_CAMERA"] = "true"
143
+
144
+ playground_process = subprocess.Popen(
145
+ ["cd", "/app/playground", "&&", "pnpm", "dev"],
146
+ env=os.environ,
147
+ shell=True
148
+ )
149
+
150
+ print("TEN-Agent started successfully.")
151
+
152
+ # Ожидаем завершения процессов
153
+ api_process.wait()
154
+ playground_process.wait()
155
+
156
+ except Exception as e:
157
+ print(f"Error: {e}")
158
+ sys.exit(1)
159
+
160
+ if __name__ == "__main__":
161
+ main()
start.sh CHANGED
@@ -24,17 +24,60 @@ else
24
  exit 1
25
  fi
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  # Запускаем сборку агента с официальной командой
28
  echo "===== Building TEN-Agent ====="
29
- task use
30
-
31
- # Обновляем порт для HuggingFace Space (HF использует порт 7860)
32
- echo "===== Setting up port for HuggingFace Space ====="
33
- export PORT=7860
 
34
 
35
- # Отключаем запрос на использование камеры для HuggingFace Space
36
- export NEXT_PUBLIC_DISABLE_CAMERA=true
37
 
38
- # Запускаем TEN-Agent с официальной командой
39
- echo "===== Starting TEN-Agent server ====="
40
- exec task run
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  exit 1
25
  fi
26
 
27
+ # Проверяем права доступа и структуру директорий
28
+ echo "===== Checking directory permissions ====="
29
+ mkdir -p /app/agents
30
+ mkdir -p /tmp/ten_agent
31
+ chmod -R 777 /app/agents
32
+ chmod -R 777 /app
33
+ chmod -R 777 /tmp/ten_agent
34
+
35
+ echo "Directory permissions:"
36
+ ls -la /app/agents
37
+ ls -la /app
38
+ ls -la /tmp/ten_agent
39
+
40
+ # Проверяем наличие директории examples
41
+ if [ -d "/app/agents/examples" ]; then
42
+ echo "✅ Examples directory found"
43
+ ls -la /app/agents/examples
44
+ else
45
+ echo "❌ Error: Examples directory not found"
46
+ # Создаем базовую структуру
47
+ mkdir -p /app/agents/examples/default
48
+ echo "Created directory structure"
49
+ fi
50
+
51
  # Запускаем сборку агента с официальной командой
52
  echo "===== Building TEN-Agent ====="
53
+ if task use; then
54
+ echo "✅ task use успешно выполнена"
55
+
56
+ # Обновляем порт для HuggingFace Space (HF использует порт 7860)
57
+ echo "===== Setting up port for HuggingFace Space ====="
58
+ export PORT=7860
59
 
60
+ # Отключаем запрос на использование камеры для HuggingFace Space
61
+ export NEXT_PUBLIC_DISABLE_CAMERA=true
62
 
63
+ # Запускаем TEN-Agent с официальной командой
64
+ echo "===== Starting TEN-Agent server ====="
65
+ exec task run
66
+ else
67
+ echo "⚠️ Warning: task use failed, trying alternative method..."
68
+
69
+ # Альтернативный метод настройки агента без использования символических ссылок
70
+ mkdir -p /app/agents/examples/default
71
+ cp -r /app/agents/examples/default/* /app/agents/ 2>/dev/null || true
72
+
73
+ echo "Manual setup completed, trying to run task run..."
74
+
75
+ if task run; then
76
+ echo "✅ task run успешно выполнена"
77
+ exit 0
78
+ else
79
+ echo "⚠️ Warning: все методы запуска через task не удались, запускаем fallback..."
80
+ chmod +x /app/fallback.py
81
+ exec python3 /app/fallback.py
82
+ fi
83
+ fi