你正在 进阶版 · 工程作品集 · 案例 02 · 回到作品集 · 进阶版主页 · 总入口

← 工程作品集 · 项目 03(系统演进)的真实案例

📈 规模化升级:从 230 到 1200+ 古籍

小剑 · 16 岁 · 系统工程与演进

背景 · 为什么升级

案例 01 的系统用了 3 个月。爷爷和朋友们反馈很好,但也指出了新需求:① 需要更多古籍(现在只有 230 块,有时候找不到),② 需要支持多轮对话("对上一个回答继续追问"),③ 需要更快的检索(现在 200ms 对诊所还是有点慢)。小剑决定升级。

升级步骤

关键代码 · 多轮对话 + 缓存

from langchain.memory import ConversationBufferMemory
from functools import lru_cache
import hashlib

# 多轮对话记忆
memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=True,
    max_token_limit=2000  # 保留最多 2000 tokens
)

# Embedding 缓存(避免重复计算)
@lru_cache(maxsize=512)
def cached_embedding(text_hash):
    """缓存查询 embedding,减少重复计算"""
    return embeddings.embed_query(text)

# 多轮对话链
conversation_chain = ConversationChain(
    llm=llm,
    memory=memory,
    prompt=ChatPromptTemplate.from_messages([
        ("system", SYSTEM_PROMPT),
        ("human", "{input}"),
        ("assistant", "{chat_history}")
    ])
)

# 使用示例
user_input_1 = "患者气喘,舌淡,怎么治?"
response_1 = conversation_chain.run(input=user_input_1)
print(response_1)

user_input_2 = "那第二条古籍怎么配合使用?"  # 需要上下文
response_2 = conversation_chain.run(input=user_input_2)
# AI 会记住之前推荐的古籍,自动将新问题与之关联

GitHub Actions CI 配置

name: Daily Regression Test

on:
  schedule:
    - cron: '0 2 * * *'  # 每天凌晨 2 点运行

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.10'

      - name: Install dependencies
        run: pip install -r requirements.txt

      - name: Run Eval Tests (50 题)
        run: python eval.py --dataset eval_50.json

      - name: Performance Check
        run: |
          python perf_test.py --samples 100
          # 检查是否检索时间 > 200ms 或推理时间 > 4s

      - name: Detect Performance Regression
        run: |
          python compare_metrics.py \
            --baseline metrics_baseline.json \
            --current metrics_current.json \
            --threshold 0.1
          # 如果性能下降 > 10%,自动失败

      - name: Notify if failed
        if: failure()
        uses: actions/github-script@v6
        with:
          script: |
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: '⚠️ Regression detected! Performance degraded > 10%'
            })

性能对比

指标升级前升级后改进
古籍块数2301200+420% ↑
向量库大小150 MB740 MB5x
检索时间200ms150ms25% ↓
推理时间3s3.2s-7% (接受)
准确率87%84%-3% (可接受)
真实用户13新增 2 人

升级后的问题和解决

学到的经验

小剑说:"升级比从 0 开始更难。因为要保证向后兼容,还要确保性能不下降太多。最聪明的决定是提前建立 CI 和 baseline metrics,这样每次改动都能看到影响。"

你也想做?

这个项目用的是进阶版 · 项目 03「系统演进」

→ 打开项目 03