必须修改的部分

本文摘要介绍了使用Python脚本处理PDF课程文件并存入PostgreSQL数据库前的必要配置修改:
数据库连接:需修改main.py中的数据库URL,替换为实际的用户名、密码和数据库名
PDF路径设置:在process_pdf.py中指定实际PDF文件路径和课程名称
LLM API配置(可选):如需生成高质量测试题,需配置Claude API密钥
环境准备:需创建data文件夹存放PDF,并确保PostgreSQL中已创建相应数据库
运行步骤:安装依赖后依次执行处理脚本和启动FastAPI服务
只需修改3处配置即可运行,其他代码无需改动。

1. 数据库连接(最重要)

process_pdf.py 的开头,需要导入 main.py 的数据库配置:

# process_pdf.py 第4行
from main import SessionLocal, Course, Slide, LearningPath, PathNode

但是 main.py 中的数据库连接字符串需要先修改:

main.py 第15行

DATABASE_URL = "postgresql://your_user:your_password@localhost/adaptive_learning"

改为你的实际数据库用户名和密码,例如:

DATABASE_URL = "postgresql://postgres:123456@localhost/adaptive_learning"

2. PDF文件路径(必须改)

process_pdf.py 最后几行

if __name__ == "__main__":
    # 处理PDF
    course_id = process_course(
        pdf_path="path/to/your/course.pdf",  # 改这里
        course_name="Python函数式编程"        # 改这里
    )

改为你的实际PDF路径:

if __name__ == "__main__":
    course_id = process_course(
        pdf_path="data/course.pdf",  # 你的PDF位置
        course_name="元宇宙课程"       # 你的课程名
    )

3. LLM API配置(可选但推荐)

如果你想生成高质量的测试题和Y/Z slides,需要配置LLM API。

process_pdf.py 的开头添加

import anthropic

# 配置API key
ANTHROPIC_API_KEY = "your-api-key-here"

修改 generate_quiz_for_slide() 函数

def generate_quiz_for_slide(slide_content, slide_id):
    """
    使用Claude生成测试题
    """
    client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY)
    
    prompt = f"""
基于以下内容生成3道单选题:

{json.dumps(slide_content, ensure_ascii=False)}

要求:
1. 恰好3道题
2. 每题4个选项(A、B、C、D)
3. 难度递进

严格按照以下JSON格式输出,不要有任何markdown标记:
{{
    "questions": [
        {{
            "id": 1,
            "question": "题目内容",
            "options": {{"A": "选项A", "B": "选项B", "C": "选项C", "D": "选项D"}},
            "correct": "B"
        }}
    ]
}}
"""
    
    try:
        message = client.messages.create(
            model="claude-sonnet-4-20250514",
            max_tokens=2000,
            messages=[{"role": "user", "content": prompt}]
        )
        
        response_text = message.content[0].text
        return json.loads(response_text)
    
    except Exception as e:
        print(f"LLM生成失败,使用默认题目: {e}")
        # 返回默认题目(保持原来的模拟数据)
        return {
            "questions": [...]  # 保持原来的默认实现
        }

如果不配置LLM,脚本会使用默认的模拟数据(可以运行,但题目质量不高)。


完整的修改清单

创建一个新文件 process_pdf.py,包含以下修改:现在给你一个检查清单:

使用脚本前的检查清单

1. 修改 main.py

# 第15行,修改数据库连接
DATABASE_URL = "postgresql://你的用户名:你的密码@localhost/adaptive_learning"

2. 修改 process_pdf.py

# 文件开头(已更新)
USE_LLM = False  # 如果有Claude API key,改为True
ANTHROPIC_API_KEY = "your-key"  # 如果USE_LLM=True,填入key

# 文件末尾(已更新)
pdf_path="data/course.pdf"  # 改为你的PDF路径
course_name="元宇宙课程讲义"  # 改为你的课程名

3. 创建data文件夹

mkdir data
# 把你的PDF放到data/course.pdf

4. 确保PostgreSQL已创建数据库

psql -U postgres
CREATE DATABASE adaptive_learning;

运行步骤

# 1. 安装依赖
pip install fastapi uvicorn sqlalchemy psycopg2-binary pymupdf pydantic anthropic

# 2. 运行处理脚本
python process_pdf.py

# 3. 启动FastAPI服务
uvicorn main:app --reload

总结:需要修改3个地方,其他代码不用改!我已经更新了artifact中的代码,标注了需要修改的配置区域。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐