Day1.环境+自动化脚本
本周位置:大模型/大模型实战/Week01/Day1
本节目标:让LLM帮我做第一个科研工程任务
预期成果
到今天结束,应该有:
一个能跑通的Python项目目录
一个API Key(已安全存到.env)
一个能调通LLM的chat.py脚本
第一次让LLM帮我处理项目里的非结构化数据(如:把一段README草稿润色/把log信息提取成表格)
第一步:创建项目目录
打开终端(macOS 用Terminal或iTerm2,windows用Windows PowerShell),执行:
bash
# 创建项目目录
mkdir -p ~/projects/llm-week01
cd ~/projects/llm-week01
# 创建子目录
mkdir -p prompts
mkdir -p outputs
以上是Linux的语法,如果用Windows PowerShell,那么应该换成如下命令:
bash
# 进入项目初始工作目录
cd F:\大模型\大模型实战\Week01\Day1.环境+自动化脚本
# 创建项目目录
mkdir llm-week01 -Force
cd llm-week01
# 创建子目录
mkdir prompts -Force
mkdir outputs -Force

验证:执行 ls 会看到

第二步:注册并获取API Key
推荐:Deepseek(国内友好、中文好、注册送10元)
1.打开https://platform.deepseek.com/
2.手机号注册
3.登录后,左边菜单点API Keys-->创建API Key
4.给key起个名字(比如week01-learning)
5.复制key存到安全的地方
备注:key创建后只显示一次,关掉后就再也看不到完整版本了
备选:OpenAI/Anthropic
| 服务商 | URL | 国内可用 | 价格 | 备注 |
|---|---|---|---|---|
| DeepSeek | platform.deepseek.com | ✅ | 极便宜 | 推荐,新用户送10元 |
| 硅基流动 | cloud.siliconflow.cn | ✅ | 便宜 | 模型多 |
| 智谱 BigModel | bigmodel.cn | ✅ | 中等 | GLM-4 |
| 月之暗面 | platform.moonshot.cn | ✅ | 中等 | 长上下文 |
| OpenAI | platform.openai.com | ❌ | 需要代理 | GPT-4o |
| Anthropic | console.anthropic.com | ❌ | 需要代理 | Claude |
建议先用 DeepSeek,100% 跑通再换别的。
🔍 知识卡:API Key 的本质------你 12 周的"科研资产"
API Key 是什么?服务商给你的「身份令牌」,相当于你的长期密码。每次请求都会带上它,服务商就知道「这次调用该扣谁的钱」。
泄漏后果:拿到你 key 的人可以在 5 分钟内把你的余额刷光------爬虫会 24 小时扫 GitHub/Slack/网盘/邮件附件里的 key。
工程经验:
- 永远 .env 管理,不进代码
- 团队协作时不分享 key,每人自己生成
- 旧 key 怀疑泄漏就 revoke 重生(DeepSeek 控制台一键完成)
W12+ 会学:专业做法是用 Secret Manager(AWS Secrets Manager / HashiCorp Vault / Doppler)------但学习阶段 .env 够用。
第三步:安装依赖
3.1 确认python已安装
bash
python --version

3.2 创建虚拟环境
为什么用虚拟环境?
不污染全局python环境,项目之间互不干扰,专业做法
bash
# 创建虚拟环境
python -m venv venv
# 激活
source venv/bin/activate
# 激活后命令行前面会出现 (venv)
(venv) $
以上仍然是Linux的语法,如果用Windows PowerShell,需要换成下面的语句:
bash
# 进入工作目录
cd F:\大模型\大模型实战\Week01\Day1.环境+自动化脚本\llm-week01
# 创建虚拟环境
python -m venv venv
# 激活
.\venv\Scripts\Activate.ps1
# 激活后命令行前面会出现 (venv)
(venv) $.\venv\Scripts\Activate.ps1
下次打开新终端要重新 .\venv\Scripts\Activate.ps1 进行激活
如果报错"禁止运行脚本",先执行这一条解除限制,再激活:
bash
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.\venv\Scripts\Activate.ps1

3.3 安装依赖
bash
pip install openai python-dotenv -i https://pypi.org/simple

下载好了就是这样,如下:

第四步:配置环境变量
4.1 创建 .env文件
用一行命令搞定
bash
cd ~/projects/llm-week01
# 把 sk-xxx 换成你 DeepSeek 控制台拿到的真实 key
echo "DEEPSEEK_API_KEY=sk-你的实际key" > .env
# 立即验证文件创建成功
ls -la .env
# 应该看到类似: -rw-r--r-- ... .env
cat .env
# 应该看到: DEEPSEEK_API_KEY=sk-xxx...
以上仍然是Linux的语法,Windows PowerShell如下:
bash
cd F:\大模型\大模型实战\Week01\Day1.环境+自动化脚本\llm-week01
# 把 sk-xxx 换成你 DeepSeek 控制台拿到的真实 key
echo "DEEPSEEK_API_KEY=sk-你的实际key" > .env
# 立即验证文件创建成功
cat .env
# 应该看到: DEEPSEEK_API_KEY=sk-xxx...

4.2 创建【不要同步的文件清单】(关键!)
这个清单告诉我们项目里哪些文件绝对不能分享、不能上传云盘、不能发给任何人
bash
touch .exclude-list.txt
Windows PowerShell如下:
bash
ni .exclude-list.txt

编辑.exclude-list.txt:
# .exclude-list.txt
# 这个项目里绝不能分享/同步的文件清单
.env # ← API Key 在这里
venv/ # ← 虚拟环境,几百 MB,可重建
__pycache__/ # ← Python 编译缓存
*.pyc
.DS_Store
⚠️ .env 永远不能分享、不能截图、不能上传到任何云盘!
这是整个一周最重要的安全规则。API Key 一旦泄漏(哪怕是误传到微信/网盘/邮箱),5 分钟内就会被爬虫扫走刷光余额。养成习惯:.env 只在本地,永远不动。
⚠️ 为啥叫 .exclude-list.txt?
如果你哪天想用 git、想同步到 iCloud/OneDrive、想打包发给同学复习,这个清单能直接被大部分工具识别。即使现在不用,写下来等于"立规矩"。
4.3 测试一下
第五步:写第一个能跑通的脚本
我们要做一件有实际价值的事情:让LLM帮我把项目里的README草稿润色成清晰版。
这比问LLM一个研究问题更工程化------我们每天都会写README、写文档、写邮件让LLM帮我们润色,这就是真实的工作场景
创建 chat.py
py
# chat.py
# Day 1 · 第一次让 LLM 帮你润色项目文档
import os
from openai import OpenAI
from dotenv import load_dotenv
# 加载 .env 中的环境变量
load_dotenv()
# 创建客户端
# DeepSeek 兼容 OpenAI SDK,只需要换 base_url 和 model
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com",
)
def ask(question: str, temperature: float = 0.5) -> dict:
"""调用 LLM,返回完整响应对象"""
resp = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": question}],
temperature=temperature,
)
return resp
def main():
# 一段粗糙的 README 草稿(你日常会写的真实场景)
rough_readme = """这是我的项目。功能是处理 VisDrone 数据集。跑 baseline。
之前用 YOLOv8,现在要试试 YOLOv9。代码有点乱。GPU 是一张 A100。
队友不知道从哪开始。需要装个环境。需要装 torch。需要 pip install。
跑起来大概要 1 小时。"""
prompt = f"""你是一个科研项目文档润色助手。任务是把下面这段粗糙的项目说明润色成清晰的 README 草稿。
要求:
- 用 Markdown 格式
- 包含"项目目标 / 技术栈 / 硬件需求 / 快速开始 / 当前进度"5 个段落
- 保留所有具体信息(模型名、数据集名、硬件等)
- 不要编造代码示例
原始草稿:
```
{rough_readme}
```
请润色输出:"""
print(f"\n输入的粗糙草稿:\n{rough_readme}\n")
print("=" * 60)
resp = ask(prompt)
# 提取答案
answer = resp.choices[0].message.content
print(f"\n润色后的 README 草稿:\n{answer}\n")
# 打印用量信息
print("-" * 60)
print(f"输入 tokens: {resp.usage.prompt_tokens}")
print(f"输出 tokens: {resp.usage.completion_tokens}")
print(f"总计 tokens: {resp.usage.total_tokens}")
print(f"模型: {resp.model}")
print(f"finish_reason: {resp.choices[0].finish_reason}")
if __name__ == "__main__":
main()
运行
bash
# 进入工作目录
cd F:\大模型\大模型实战\Week01\Day1.环境+自动化脚本\llm-week01
# 解除限制
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
# 激活虚拟环境
.\venv\Scripts\Activate.ps1
# 运行代码
python chat.py
这里开始会报错,说UTF-8编码打不开,我们需要用记事本打开.env文件,然后另存为成UTF-8版本,覆盖原.env文件即可
输出结果
(venv) PS F:\大模型\大模型实战\Week01\Day1.环境+自动化脚本\llm-week01> python chat.py
输入的粗糙草稿:
这是我的项目。功能是处理 VisDrone 数据集。跑 baseline。
之前用 YOLOv8,现在要试试 YOLOv9。代码有点乱。GPU 是一张 A100。
队友不知道从哪开始。需要装个环境。需要装 torch。需要 pip install。
跑起来大概要 1 小时。
============================================================
润色后的 README 草稿:
# 无人机航拍目标检测项目(VisDrone)
## 项目目标
本项目旨在基于 **VisDrone 数据集** 进行无人机航拍场景下的目标检测任务,主要工作包括:
- 运行并评估现有 baseline 模型在 VisDrone 上的表现;
- 将检测模型从 **YOLOv8** 迁移至 **YOLOv9**,对比两者在精度与速度上的差异;
- 整理当前代码结构,为团队协作提供清晰可复现的运行流程。
## 技术栈
- **模型**:YOLOv8(当前 baseline)、YOLOv9(待测试)
- **深度学习框架**:PyTorch(需安装 `torch`)
- **依赖管理**:`pip` 安装所需 Python 包
- **数据集**:VisDrone(官方格式)
## 硬件需求
- **GPU**:NVIDIA A100(单卡,显存 40GB 或以上)
- **建议显存**:≥ 16GB(以适配 YOLOv9 训练/推理)
## 快速开始
1. **克隆项目并进入目录**
```bash
git clone <repo-url>
cd <project-dir>
-
创建虚拟环境(可选但推荐)
bashpython -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows -
安装依赖
bashpip install torch torchvision pip install -r requirements.txt # 若存在 -
准备数据
将 VisDrone 数据集按项目内
data/目录结构放置,或修改配置文件中的路径。 -
运行训练/评估脚本
参考
scripts/下的脚本(当前代码结构尚在整理中,具体命令待补充)。
⚠️ 注意:当前代码组织较为混乱,正在重构中,后续会提供更清晰的入口脚本。
当前进度
- ✅ 已用 YOLOv8 跑通 baseline(单次完整流程约需 1 小时)
- 🔄 正在准备 YOLOv9 环境与配置
- 📝 代码结构重构中,需补充 README、配置说明与运行脚本
- 👥 团队协作:环境安装步骤已整理,队友可参照"快速开始"部分自行搭建环境
项目处于早期阶段,欢迎补充与改进。
输入 tokens: 175
输出 tokens: 543
总计 tokens: 718
模型: deepseek-v4-flash
finish_reason: stop
##### 跑通标志:
- 看到一段结构化的 README 草稿
- 看到 token 计数(一般 200-500 之间)
- finish_reason: stop (表示正常完成,不是被截断)
------
##### 知识卡:
base_url + model 两个参数决定一切------OpenAI SDK 是"标准接口"
你看到代码里只改 base_url 和 model 就能切到不同服务商的模型。这不是技巧------是 OpenAI 定义的 Chat Completions API 成为了行业标准。
------
##### 为什么这点很关键?
OpenAI 2023 年发布的 Chat Completions API(/v1/chat/completions)现在被所有主流 LLM 服务商兼容:
- DeepSeek ✓
- 智谱 BigModel ✓
- 月之暗面 ✓
- 通义千问 ✓
- Ollama(本地模型) ✓
------
##### 结果是:
你学到这套 SDK,在任何 LLM 服务商都能直接用------切换服务商 = 改 1 行 base_url。
------
##### 工程师视角:
这是"接口标准化"的胜利:
- HTTP 之于网络协议
- SQL 之于数据库
- OpenAI Chat Completions API 之于 LLM 应用
## 第六步:理解响应结构
python
```bash
>>> from chat import ask
>>> resp = ask("你好")
>>> type(resp)
<class 'openai.types.chat.chat_completion.ChatCompletion'>
# 访问字段
>>> resp.choices # 列表,通常只有一个
>>> resp.choices[0] # 选择对象
>>> resp.choices[0].message # 消息对象
>>> resp.choices[0].message.role # 'assistant'
>>> resp.choices[0].message.content # 实际回答
>>> resp.usage # 用量
>>> resp.usage.total_tokens # 总 token
>>> resp.model # 'deepseek-chat'

理解这一点的意义:
- choices0.message.content 是你要的文本------后面所有 LLM 应用都从这里取
- usage.total_tokens 用来算成本------W2 你会用它做 token 计费
- choices 是列表------可以一次生成多个候选(n=3)让用户挑
按 ctrl + D 退出REPL
第七步:尝试5个不同类型的工程任务
修改chat.py的prompt部分,每次跑一种类型,跑5个不同类型的prompt:
| # | 任务类型 | 你日常会做的例子 |
|---|---|---|
| 1 | 文档润色 | "把这段粗糙的 README 改成清晰版" |
| 2 | 代码生成 | "用 Python 写一个快速排序" |
| 3 | 代码解释 | "解释这段代码 一段复杂代码" |
| 4 | Bug 分析 | "我训练 loss 不下降,可能原因?" |
| 5 | 英语翻译 | "把这段中文邮件翻译成英文给国外导师" |
为什么是这 5 个类型?
这是你日常科研工程工作中,真正会用 LLM 做的 5 类事:
- 文档润色(写 README、写 commit msg、写邮件)
- 代码生成(写小工具、写脚本)
- 代码解释(看别人/自己的代码)
- Bug 分析(debug 训练、debug 代码)
- 英语翻译(论文写作、跨语言交流)
这不是"问研究问题",而是"让 LLM 当你的工程助理"。
第八步:理解token计费
Token是什么?
简单理解:1个汉字≈1-2个token,1个英文单词≈1-1.5个token
Deepseek单价是:输入1元/百万token,输出2元/百万token
小结
环境搭建 :Python 虚拟环境 + .env 管理 + 排除清单
第一次跑工程自动化:让 LLM 帮我润色 README 草稿
理解响应结构 :知道 choices / message / usage 是什么
跑 5 种工程类型:文档 / 代码 / Bug / 翻译 各种用法
建立计费意识:知道 token 怎么算钱
为什么是这 5 个类型?
这是你日常科研工程工作中,真正会用 LLM 做的 5 类事:
- 文档润色(写 README、写 commit msg、写邮件)
- 代码生成(写小工具、写脚本)
- 代码解释(看别人/自己的代码)
- Bug 分析(debug 训练、debug 代码)
- 英语翻译(论文写作、跨语言交流)
这不是"问研究问题",而是"让 LLM 当你的工程助理"。
第八步:理解token计费
Token是什么?
简单理解:1个汉字≈1-2个token,1个英文单词≈1-1.5个token
Deepseek单价是:输入1元/百万token,输出2元/百万token
小结
环境搭建 :Python 虚拟环境 + .env 管理 + 排除清单
第一次跑工程自动化:让 LLM 帮我润色 README 草稿
理解响应结构 :知道 choices / message / usage 是什么
跑 5 种工程类型:文档 / 代码 / Bug / 翻译 各种用法
建立计费意识:知道 token 怎么算钱