Day1.环境+自动化脚本

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>
  1. 创建虚拟环境(可选但推荐)

    bash 复制代码
    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
  2. 安装依赖

    bash 复制代码
    pip install torch torchvision
    pip install -r requirements.txt  # 若存在
  3. 准备数据

    将 VisDrone 数据集按项目内 data/ 目录结构放置,或修改配置文件中的路径。

  4. 运行训练/评估脚本

    参考 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 怎么算钱

相关推荐
云飞云共享云桌面1 小时前
非标装备厂降本方案|8‑10 人三维研发共用一台主机,兼容SolidWorks等多款 3D 绘图软件
运维·服务器·3d·自动化·负载均衡·制造
OmniGoAI2 小时前
失败后别重来:让 AI 助理从上次进度继续
自动化·任务管理·ai助手
Archy_Wang_19 小时前
LVS+KeepAlived+Nginx实现企业级业务高可靠部署的实战教程
运维·nginx·lvs
张文君10 小时前
docker使用代理拉取镜像
运维·docker·容器
陌路2011 小时前
Docker教程从入门到精通(0基础)
运维·docker·容器
Tongzhi202612 小时前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法
数据知道12 小时前
宽字节注入、二次注入、堆叠注入:高级 SQLi 专题
linux·运维·安全·网络安全
2301_7807896612 小时前
DDoS 攻击溯源:DNS 水印标记 + 区块链存证的双保险
运维·服务器·网络·云原生·ddos
童槿顏丶14 小时前
GitLab部署到Linux
linux·运维·gitlab