Expose OpenAI API compatibility using aichat

This commit is contained in:
ben
2025-02-01 13:54:25 +01:00
parent 01f224002e
commit cf09067c15
5 changed files with 47 additions and 5 deletions

View File

@@ -54,10 +54,21 @@ services:
links:
- ollama
aichat-build:
aichat:
build:
dockerfile: src/aichat/Dockerfile
restart: no
restart: unless-stopped
environment:
- API_KEY=${LLM_API_KEY}
depends_on:
- ollama
links:
- ollama
healthcheck:
test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/8000' || exit 1
interval: 30s
timeout: 15s
retries: 3
faster-whisper-server:
image: fedirz/faster-whisper-server:latest-cuda
@@ -74,7 +85,7 @@ services:
capabilities: [gpu]
restart: unless-stopped
healthcheck:
test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/8000' || exit 1
test: curl --fail http://localhost:8000 || exit 1
interval: 30s
timeout: 15s
retries: 3
@@ -90,14 +101,17 @@ services:
- openedai-speech
- faster-whisper-server
- ollama
- aichat
links:
- ollama
- faster-whisper-server
- openedai-speech
- aichat
ports:
- "11434:11434"
- "8000:8000"
- "8001:8001"
- "8002:8002"
restart: unless-stopped
volumes:

View File

@@ -7,7 +7,7 @@ cd "$SCRIPTPATH" || exit
if [[ ! -x $(command -v aichat) ]]; then
echo "aichat is not installed."
if [[ $(docker images -q aichat-build 2>/dev/null) ]]; then
container_id=$(docker create "aichat-build")
container_id=$(docker create "aichat")
docker cp "${container_id}:/usr/local/cargo/bin/aichat" "./tools/"
docker rm "${container_id}"
else

View File

@@ -1,7 +1,14 @@
FROM rust:latest
RUN rustup target add x86_64-unknown-linux-musl
RUN apt update && apt install -y musl-tools musl-dev
RUN apt update && apt install -y musl-tools musl-dev curl
RUN update-ca-certificates
RUN cargo install --target x86_64-unknown-linux-musl aichat
ADD src/aichat/entrypoint.sh /entrypoint.sh
ADD src/aichat/config.yaml /aichat_config_tpl.yaml
RUN chmod 755 entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

4
src/aichat/entrypoint.sh Normal file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
mkdir -p ~/.config/aichat
cat /aichat_config_tpl.yaml | sed "s/__LLM_API_KEY__/${LLM_API_KEY}/" | sed "s/localhost/ollama/" >~/.config/aichat/config.yaml
aichat --serve 0.0.0.0

View File

@@ -58,4 +58,21 @@ http {
proxy_set_header Connection "upgrade";
}
}
server {
listen 8002;
set $deny 1;
if ($http_authorization = "Bearer $API_KEY") {
set $deny 0;
}
if ($deny) {
return 403;
}
location / {
proxy_pass http://aichat:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}