架构工程化与项目的大模型评测记录

Rudy 2026-4-16 3 4/16

一、架构工程化

1.项目环境

解决之前的虚拟环境pip情况,现在直接用uv 的工程化方式

后续用法:

uv init --package my_project
uv add fastapi uvicorn pytest ruff
uv run uvicorn my_project.main:app --reload
uv sync
uv build
uv publish

 uv export --format requirements-txt --no-hashes -o requirements.txt
 uv export --format requirements-txt --no-hashes --group dev -o requirements-dev.txt

清朗多了

架构工程化与项目的大模型评测记录

2.docker 工程化部署

增加一键docker-compose.yml, 前后端配置Dockfile文件,增加.env.compose,并映射端口不与本地冲突(如果想要本地多运行项目的话)

services:
  mysql:
    image: mysql:8.0
    container_name: ai-list-mysql
    restart: unless-stopped
    environment:
      TZ: ${TZ:-Asia/Shanghai}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-123456}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-ai_list}
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    ports:
      - "${MYSQL_PORT:-3307}:3306"
    volumes:
      - mysql_data:/var/lib/mysql
      - ./backend/sql/create_tables.sql:/docker-entrypoint-initdb.d/01-create_tables.sql:ro
      - ./backend/sql/insert_data.sql:/docker-entrypoint-initdb.d/02-insert_data.sql:ro
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$${MYSQL_ROOT_PASSWORD} --silent"]
      interval: 10s
      timeout: 5s
      retries: 15

  redis:
    image: redis:7-alpine
    container_name: ai-list-redis
    restart: unless-stopped
    ports:
      - "${REDIS_PORT:-6380}:6379"
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 10

  embedding:
    image: ${EMBEDDING_IMAGE:-ghcr.io/huggingface/text-embeddings-inference:cuda-1.8.1}
    container_name: ai-list-embedding
    restart: unless-stopped
    command:
      - --model-id
      - ${EMBEDDING_MODEL_ID:-BAAI/bge-m3}
    ports:
      - "${EMBEDDING_PORT:-8081}:80"
    volumes:
      - ./data/tei:/data
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [ gpu ]

  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    container_name: ai-list-backend
    restart: unless-stopped
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_healthy
      embedding:
        condition: service_started
    env_file:
      - ./backend/.env.compose
    environment:
      TZ: ${TZ:-Asia/Shanghai}
    command:
      - sh
      - -c
      - uv run uvicorn app.main:app --host 0.0.0.0 --port 1235
    ports:
      - "${BACKEND_PORT:-1235}:1235"
    volumes:
      - ./backend/logs:/app/logs

  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile
      args:
        VITE_API_BASE_URL: http://localhost:${BACKEND_PORT:-1235}
        VITE_ACCESS_KEY: test_key
        VITE_ACCESS_SECRET: test_secret
        VITE_AI_SCENE: default
    container_name: ai-list-frontend
    restart: unless-stopped
    depends_on:
      - backend
    ports:
      - "${FRONTEND_PORT:-5173}:80"

volumes:
  mysql_data:

3.数据库xx

之前在实习中,部门主管有次分享代码编写规范,有个项目是全参数传递没有一个包含实际文本值的,流程大概是把所有大模型里用到的提示词和密钥信息以及其他的复用参数全映射成model字段建表加索引保存在数据库中而且没有冗余字段,只要对数据库的分库分表优化加载,那代码架构真的可以,当时他说他的两个徒弟都是架构师了,那时我就觉是吹牛,现在含泪唏嘘啊啊啊~

二、项目评估方案

1.项目一

AI_List_Generate

  • AB测试

数据集太大,个人项目暂不可取,有空在安排

  • LangSmith观测平台

1)翻译模型评估:

架构工程化与项目的大模型评测记录 架构工程化与项目的大模型评测记录

2.项目二

ZhiYuan_Agentic

  • AB测试好

数据集太大,个人项目暂不可取,有空在安排

  • LangSmith观测平台

 

- THE END -
最后修改:2026年4月16日
1

共有 0 条评论