Skip to content

Commit 87e813b

Browse files
authored
Langchain based agent (#6)
* experiment LangChain * experimetns langchain * add new prompts * add extraction from chromadb * MVP ready - need to refactor jupyter to core logic * add new logic from langfuse experiments + new structure -> MLOPS standart new * new pyproejct.toml * add .pre-commit-config.yaml + add pyproject.toml settings * update dependecies * fix format and project.toml config * fix pre-commit + add ignore * new service idea * refactor strange service names due the fact that was a random generation from gpt model * fix new service at jupyter notebook * fix ruff * add postgres ext * add API for agent in FastAPI * fix service api and required field * fix github action + ruff lint formating * fix awaiting chat * add examples .env * fix chroma load scripts * add userratelimiter * fixup! 20a84b8 Created by IntelliJ Git plugin for drop selected changes operation * fix ruff minor erros
1 parent 50fcaf0 commit 87e813b

128 files changed

Lines changed: 11045 additions & 2240 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
/build/
1313
/nginx/
1414

15+
# Игнорируем проектные файлы
16+
mlops/
17+
experiments/
18+
1519
# Игнорируем временные файлы IDE
1620
.idea
1721
.vscode

.env.example

Lines changed: 42 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,50 @@
1-
# .env (add this to .gitignore!)
1+
# YandexCloudGPT
22

3-
4-
# Yandex.Cloud secrets
5-
export FOLDER_ID="x1ue823jv1ws48cloudy1"
6-
export API_KEY="QWJEJ48m6LfUEggPbmocHmW00JJgpZNetSv_NaZZaret"
7-
8-
# Yandex.Cloud GPT API
3+
export OPENAI_FOLDER_ID="b1g...8m" # CHANGME
4+
export OPENAI_API_KEY="AQ...h9xyi" # CHANGME
5+
export OPENAI_API_BASE="https://llm.api.cloud.yandex.net/v1"
96
export EMBEDDING_API="https://llm.api.cloud.yandex.net:443/foundationModels/v1/textEmbedding"
107
export YANDEXGPT_API="https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
118

12-
# ChromaDB secrets
13-
export COLLECTION_NAME="PRODUCTION_PROFKOM"
14-
export CHROMA_PORT="8000"
15-
export CHROMA_HOST="127.0.0.1"
16-
export NGINX_TOKEN="test-abcd1234"
9+
# Agent ENV
1710

18-
# Redis secrets
19-
export REDIS_HOST="127.0.0.1"
20-
export REDIS_PORT="6379"
11+
export UNIQUE_BOT_ID="80...2:A...Xyi" # CHANGME
2112
export RATE_LIMIT_TEMPLATE="msg_count:{user_id}"
22-
export USER_QUERY_LIMIT_TTL_SECONDS=4
23-
export USER_QUERY_LIMIT_N=10
24-
export MAX_CACHED_REQUESTS_N=10000
25-
export EXPIRE_TIME_CACHED_REQUEST_SECONDS=7200
26-
export MAX_HISTORY_USER_LENGTH=10
27-
export HISTORY_USER_TTL_DAYS=7
28-
29-
# Telegram secrets
30-
export UNIQUE_BOT_ID="41823841384:FF1I2RagnarekC4MAyBEF9kWvAAqaaabWRRN1oOOPr"
31-
32-
# Prompts files
33-
export DEFAULT_PROMPT_FILE="default_prompt.txt"
34-
export DEFAULT_DIR_PROMPT="./prompts"
35-
36-
# RAG variables
37-
export TOP_K_DOCUMENTS=5
38-
export MAX_RAG_DOCUMENTS=20
39-
export MAX_FASTAPI_THREADS=10
40-
export MAX_TOKENS_DEFAULT_API=14000
13+
14+
# Chroma
15+
16+
export CHROMA_PORT=8000
17+
export CHROMA_HOST="127.0.0.1"
4118
export TIME_SLEEP_RATE_EMBEDDER=0.01
42-
export TEMPERATURE_REWRITE_MANAGER=0.9
43-
export MAX_TOKENS_REWRITE_MANAGER=4000
19+
export SIMILARITY_FILTER=1.5
20+
export CHROMA_MAX_RAG_DOCUMENTS=42
21+
export CHROMA_TOPK_DOCUMENTS=5
22+
export COLLECTION_NAME="PRODUCTION_PROFKOM"
23+
24+
# Redis
25+
26+
export REDIS_PORT=6379
27+
export REDIS_HOST="127.0.0.1"
28+
export REDIS_THRESHOLD=0.05
29+
export REDIS_TTL=3600
30+
31+
# Langfuse
32+
33+
export LANGFUSE_SECRET_KEY="sk-lf-f46...42a" # CHANGME
34+
export LANGFUSE_PUBLIC_KEY="pk-lf-8b...jOpa" # CHANGME
35+
export LANGFUSE_HOST="http://127.0.0.1:3000"
36+
export LANGFUSE_PROJECT_ID=profkom
37+
export LANGFUSE_STAGE=dev
38+
39+
# Postgres
40+
41+
export PG_USER="union_chatbot"
42+
export PG_PASSWORD="42...j0pA" # CHANGME
43+
export POSTGRES_DB="union_chatbot_db"
44+
export PG_SCHEMA="public"
45+
export PG_HOST="127.0.0.1"
46+
export PG_PORT=5432
47+
48+
# Nginx
4449

45-
# Postgres secrets
46-
export POSTGRES_DSN=postgresql://test_user:test_password@127.0.0.1:5432/test_db
50+
export NGINX_TOKEN="6l...-5g" # CHANGME

.env.prod.example

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,50 @@
1-
FOLDER_ID="x1ue823jv1ws48cloudy1"
2-
API_KEY="QWJEJ48m6LfUEggPbmocHmW00JJgpZNetSv_NaZZaret"
1+
# YandexCloudGPT
2+
3+
OPENAI_FOLDER_ID="b1g...8m" # CHANGME
4+
OPENAI_API_KEY="AQ...h9xyi" # CHANGME
5+
OPENAI_API_BASE="https://llm.api.cloud.yandex.net/v1"
36
EMBEDDING_API="https://llm.api.cloud.yandex.net:443/foundationModels/v1/textEmbedding"
47
YANDEXGPT_API="https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
5-
COLLECTION_NAME="default_collection"
6-
UNIQUE_BOT_ID="41823841384:FF1I2RagnarekC4MAyBEF9kWvAAqaaabWRRN1oOOPr"
7-
DEFAULT_PROMPT_FILE="default_prompt.txt"
8-
DEFAULT_DIR_PROMPT="./prompts"
8+
9+
# Agent ENV
10+
11+
UNIQUE_BOT_ID="8...2:A...Xyi" # CHANGME
912
RATE_LIMIT_TEMPLATE="msg_count:{user_id}"
10-
USER_QUERY_LIMIT_TTL_SECONDS=57600
11-
USER_QUERY_LIMIT_N=10
12-
MAX_CACHED_REQUESTS_N=10000
13-
EXPIRE_TIME_CACHED_REQUEST_SECONDS=7200
14-
MAX_HISTORY_USER_LENGTH=10
15-
HISTORY_USER_TTL_DAYS=7
16-
TOP_K_DOCUMENTS=5
17-
MAX_TOKENS_DEFAULT_API=14000
18-
MAX_RAG_DOCUMENTS=20
19-
MAX_FASTAPI_THREADS=10
13+
14+
# Chroma
15+
16+
CHROMA_PORT=8000
17+
CHROMA_HOST="127.0.0.1"
2018
TIME_SLEEP_RATE_EMBEDDER=0.01
21-
TEMPERATURE_REWRITE_MANAGER=0.9
22-
MAX_TOKENS_REWRITE_MANAGER=4000
23-
CHROMA_HOST="chromadb"
24-
REDIS_HOST="redis"
25-
CHROMA_PORT="8000"
26-
REDIS_PORT="6379"
27-
POSTGRES_DSN=postgresql://test_user:test_password@127.0.0.1:5432/test_db
19+
SIMILARITY_FILTER=1.5
20+
CHROMA_MAX_RAG_DOCUMENTS=42
21+
CHROMA_TOPK_DOCUMENTS=5
22+
COLLECTION_NAME="PRODUCTION_PROFKOM"
23+
24+
# Redis
25+
26+
REDIS_PORT=6379
27+
REDIS_HOST="127.0.0.1"
28+
REDIS_THRESHOLD=0.05
29+
REDIS_TTL=3600
30+
31+
# Langfuse
32+
33+
LANGFUSE_SECRET_KEY="sk-lf-f46...42a" # CHANGME
34+
LANGFUSE_PUBLIC_KEY="pk-lf-8b...jOpa" # CHANGME
35+
LANGFUSE_HOST="http://127.0.0.1:3000" # CHANGME
36+
LANGFUSE_PROJECT_ID=profkom
37+
LANGFUSE_STAGE=dev
38+
39+
# Postgres
40+
41+
PG_USER="union_chatbot"
42+
PG_PASSWORD="42...j0pA" # CHANGME
43+
POSTGRES_DB="union_chatbot_db" # CHANGME
44+
PG_SCHEMA="public" # CHANGME
45+
PG_HOST="127.0.0.1"
46+
PG_PORT=5432
47+
48+
# Nginx
49+
50+
NGINX_TOKEN="6l...-5g" # CHANGME

.github/workflows/docker-publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ jobs:
5454
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
5555
5656
echo "Pulling latest Docker images..."
57-
docker-compose -f docker-compose-prod.yml pull
57+
docker-compose -f ./mlops/docker/docker-compose-prod.yml pull
5858
5959
echo "Restarting containers..."
60-
docker-compose -f docker-compose-prod.yml up -d
60+
docker-compose -f ./mlops/docker/docker-compose-prod.yml up -d
6161
6262
echo "Removing old images (optional cleanup):"
6363
docker image prune -af

.github/workflows/ruff.yml

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,25 @@ jobs:
1616
- name: Checkout code
1717
uses: actions/checkout@v4
1818

19-
- name: Set up Python
20-
uses: actions/setup-python@v5
19+
- name: Install uv
20+
uses: astral-sh/setup-uv@v7
2121
with:
22-
python-version: "3.10"
22+
python-version: "3.12"
2323

24-
- name: Install dependencies
24+
- name: Create venv and install
2525
run: |
26-
python -m pip install --upgrade pip
27-
pip install ruff
28-
pip install .
26+
uv venv --python 3.12 .venv
27+
source .venv/bin/activate
28+
uv pip install --upgrade pip
29+
uv pip install ruff
30+
uv pip install .
2931
30-
- name: Run Ruff Check
31-
run: ruff check --output-format=github .
32+
- name: Run Ruff Check (src only)
33+
run: |
34+
source .venv/bin/activate
35+
ruff check --output-format=github ./src
3236
33-
- name: Run Ruff Format Check
34-
run: ruff format --check .
37+
- name: Run Ruff Format Check (src only)
38+
run: |
39+
source .venv/bin/activate
40+
ruff format --check ./src

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ UnionChatBot.egg-info
1313
*.log
1414
/build/
1515
*.md
16-
*.docx
16+
*.docx
17+
*.txt

.pre-commit-config.yaml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,24 @@
11
repos:
2-
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
rev: v0.12.3
2+
- repo: local
43
hooks:
54
- id: ruff
6-
args: [ --fix ]
5+
name: ruff
6+
entry: ruff check --fix
7+
language: system
8+
types: [python]
9+
stages: [pre-commit]
10+
711
- id: ruff-format
12+
name: ruff-format
13+
entry: ruff format
14+
language: system
15+
types: [python]
16+
stages: [pre-commit]
17+
18+
- id: pylint
19+
name: pylint
20+
entry: pylint
21+
language: system
22+
types: [python]
23+
require_serial: false
24+
stages: [pre-commit]

Dockerfile

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)