File size: 4,432 Bytes
60c2f18
 
9201b00
594536a
eae7567
2839144
 
 
 
 
eae7567
2839144
58cec34
2839144
58cec34
594536a
 
f3cfd91
 
2839144
 
58cec34
60c2f18
 
87337b1
c8259c0
 
87337b1
c8259c0
87337b1
c8259c0
 
9f18430
 
 
 
86f3bf2
3c7d3b0
 
 
9f18430
60c2f18
 
9f18430
8c8541b
 
 
 
f3cfd91
9710cde
 
 
9f18430
594536a
 
86f3bf2
9710cde
57b5794
9f18430
d377d95
86f3bf2
9f18430
f3cfd91
 
 
 
 
594536a
9710cde
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44a0185
 
 
 
 
 
 
 
 
9710cde
44a0185
 
 
 
9710cde
44a0185
 
 
 
 
9710cde
 
 
 
 
 
 
bd61329
9710cde
 
 
 
 
 
 
 
 
 
3c7d3b0
9710cde
9f18430
 
594536a
db0df50
 
60c2f18
3da93f6
9f18430
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
FROM ubuntu:22.04

# Принудительное обновление для HuggingFace, чтобы использовать правильную версию Dockerfile
# Установка необходимых пакетов
RUN apt-get clean && apt-get update && apt-get install -y --no-install-recommends \
    libasound2 \
    libgstreamer1.0-dev \
    libunwind-dev \
    libc++1 \
    libssl-dev \
    python3 \
    python3-venv \
    python3-pip \
    python3-dev \
    curl \
    wget \
    unzip \
    git \
    build-essential \
    jq \
    vim \
    ca-certificates \
    && apt-get clean && rm -rf /var/lib/apt/lists/* && rm -rf /tmp/*

# Установка Go 1.21
RUN wget https://golang.org/dl/go1.21.0.linux-amd64.tar.gz && \
    tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz && \
    rm go1.21.0.linux-amd64.tar.gz
ENV PATH=$PATH:/usr/local/go/bin
ENV GOPATH=/go
ENV PATH=$PATH:$GOPATH/bin

# Создаем каталог для кэша Go и устанавливаем правильные разрешения
RUN mkdir -p /go && chmod 777 /go

# Установка Node.js и pnpm
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get install -y nodejs && \
    npm install -g pnpm

# Устанавливаем рабочую директорию
WORKDIR /app

# Клонируем репозиторий TEN-Agent
RUN git clone --depth 1 https://github.com/TEN-framework/TEN-Agent.git /app && \
    echo "Доступные ветки и теги:" && \
    git branch -a && \
    git tag -l

# Устанавливаем task для сборки
RUN go install github.com/go-task/task/v3/cmd/task@latest

# Создаем необходимые директории и устанавливаем права
RUN mkdir -p /app/server/bin && \
    mkdir -p /app/agents && \
    mkdir -p /tmp/ten_agent && \
    mkdir -p /app/.pnpm-store

# Копируем .env файл
COPY .env /app/.env

# Компилируем сервер
RUN cd /app/server && \
    go mod tidy && \
    go mod download && \
    go build -o bin/api main.go && \
    chmod +x bin/api

# Установка зависимостей для Playground UI
ENV PNPM_HOME="/app/.pnpm-store"
ENV PATH="$PNPM_HOME:$PATH"
RUN cd /app/playground && \
    pnpm install

# Подготавливаем пример агента для работы Select Graph
RUN cd /app && \
    mkdir -p agents/examples && \
    mkdir -p agents/examples/default && \
    mkdir -p agents/examples/demo && \
    mkdir -p agents/examples/experimental

# Копируем примеры из репозитория
RUN cd /app && \
    cp -r agents/examples/default agents/ && \
    cp -r agents/examples/demo agents/ && \
    cp -r agents/examples/experimental agents/

# Создаем базовый manifest.json
RUN echo '{\n\
    "name": "default",\n\
    "agents": [\n\
    {\n\
    "name": "voice_agent",\n\
    "description": "A simple voice agent"\n\
    },\n\
    {\n\
    "name": "chat_agent",\n\
    "description": "A text chat agent"\n\
    }\n\
    ]\n\
    }' > /app/agents/manifest.json

# Создаем базовый property.json
RUN echo '{\n\
    "name": "TEN Agent Example",\n\
    "version": "0.0.1",\n\
    "extensions": ["openai_chatgpt"],\n\
    "description": "A basic voice agent with OpenAI",\n\
    "graphs": [\n\
    {\n\
    "name": "Voice Agent",\n\
    "description": "Basic voice agent with OpenAI",\n\
    "file": "voice_agent.json"\n\
    },\n\
    {\n\
    "name": "Chat Agent",\n\
    "description": "Simple chat agent",\n\
    "file": "chat_agent.json"\n\
    }\n\
    ]\n\
    }' > /app/agents/property.json

# Создаем простые примеры графов
RUN echo '{\n\
    "nodes": [],\n\
    "edges": [],\n\
    "groups": [],\n\
    "templates": [],\n\
    "root": null\n\
    }' > /app/agents/voice_agent.json

RUN echo '{\n\
    "nodes": [],\n\
    "edges": [],\n\
    "groups": [],\n\
    "templates": [],\n\
    "root": null\n\
    }' > /app/agents/chat_agent.json

# Устанавливаем правильные права доступа для всех файлов
RUN chmod -R 777 /app

# Настраиваем стартовый скрипт
COPY app.py /app/app.py
RUN chmod +x /app/app.py

# Открываем порты
EXPOSE 7860 8080 3000

# Запускаем API сервер и Playground в dev-режиме
ENTRYPOINT ["python3", "/app/app.py"]