cold-msg 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,244 @@
1
+ Metadata-Version: 2.4
2
+ Name: cold-msg
3
+ Version: 0.1.0
4
+ Summary: 招聘冷邮件智能生成工具 - 基于候选人简历文本自动生成 Cold Email
5
+ Author-email: Chandler <275737875@qq.com>
6
+ License: MIT
7
+ Keywords: cold-email,recruiting,llm,ai,hr
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Communications :: Email
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ Requires-Dist: llmdog>=0.1.0
19
+ Requires-Dist: flask>=3.0.0
20
+ Requires-Dist: typer>=0.9.0
21
+ Requires-Dist: rich>=13.0.0
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: python-dotenv>=1.0.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: pytest>=7.0; extra == "dev"
26
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
27
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
28
+ Requires-Dist: mypy>=1.0; extra == "dev"
29
+
30
+ # ColdMsg - 招聘冷邮件智能生成工具
31
+
32
+ 基于候选人简历文本,利用 LLM 自动匹配职位并生成专业的招聘 Cold Email。
33
+
34
+ ## 功能特性
35
+
36
+ - **智能匹配**:AI 根据候选人技术背景自动匹配最合适的职位
37
+ - **模板可配**:邮件模板各字段均可自定义,支持占位符变量替换
38
+ - **多种使用方式**:Python 库 / CLI 命令行 / Web 界面
39
+ - **职位管理**:支持 YAML/JSON 导入导出,Web 端增删改查
40
+ - **配置灵活**:`.env` + `config.yaml` + 环境变量三层优先级
41
+
42
+ ## 安装
43
+
44
+ ```bash
45
+ pip install cold-msg
46
+ ```
47
+
48
+ 或从源码安装:
49
+
50
+ ```bash
51
+ git clone https://github.com/example/cold-msg.git
52
+ cd cold-msg
53
+ pip install -e .
54
+ ```
55
+
56
+ ## 快速开始
57
+
58
+ ### 1. 配置环境变量
59
+
60
+ ```bash
61
+ cp .env.example .env
62
+ ```
63
+
64
+ 编辑 `.env` 文件,填入 LLM 相关配置:
65
+
66
+ ```env
67
+ LLM_MODEL=deepseek-v3.1-terminus
68
+ COLDMSG_SENDER_NAME=Michael
69
+ COLDMSG_TEAM_NAME=高端招聘团队
70
+ ```
71
+
72
+ ### 2. 准备职位列表
73
+
74
+ 在项目根目录创建 `config.yaml`:
75
+
76
+ ```yaml
77
+ sender_name: Michael
78
+ team_name: 高端招聘团队
79
+ company_desc: 国际知名大型科技公司
80
+ llm_model: deepseek-v3.1-terminus
81
+
82
+ jobs:
83
+ - job_title: 大模型Agent专家
84
+ qualification: Agent,Agentic技术,博士,5年+经验
85
+ location: 北上深等
86
+ - job_title: 编译器实验室专家
87
+ qualification: 编译器技术精通,MLIR,LLVM,GCC,AI编译等
88
+ location: 北上深杭等
89
+
90
+ email_template:
91
+ sender_name: Michael
92
+ team_name: 高端招聘团队
93
+ company_desc: 国际知名大型科技公司
94
+ greeting: "您好{FullName},"
95
+ intro: "我来自{TeamName},很冒昧的给您发邮件。"
96
+ body: "我负责{CompanyDesc}招聘,向您推荐\"{JobTitle}\"的职位。"
97
+ location_line: "职位地点: {Location}"
98
+ closing: "如果您有兴趣具体了解的话,可以留个电话或者微信~"
99
+ sign_off: "祝颂商祺"
100
+ signature: "Michael"
101
+ ```
102
+
103
+ ## 使用方式
104
+
105
+ ### Python 库
106
+
107
+ ```python
108
+ from cold_msg import generate_cold_email
109
+
110
+ result = generate_cold_email(
111
+ resume_text="张三,10年AI研发经验,精通大模型训练、推理优化..."
112
+ )
113
+
114
+ if result.match_job_title:
115
+ print(f"推荐职位: {result.recommend_title}")
116
+ print(result.email_content)
117
+ else:
118
+ print("未匹配到合适职位")
119
+ ```
120
+
121
+ ### CLI 命令行
122
+
123
+ ```bash
124
+ # 生成冷邮件
125
+ cold-msg generate "张三,10年AI研发经验,精通大模型训练、推理优化..."
126
+
127
+ # 指定模型和输出文件
128
+ cold-msg generate "简历文本" --model deepseek-v3.1-terminus -o result.json
129
+
130
+ # 输出原始 JSON
131
+ cold-msg generate "简历文本" --raw
132
+
133
+ # 启动 Web 界面
134
+ cold-msg web --port 6060
135
+
136
+ # 查看配置
137
+ cold-msg config show
138
+
139
+ # 管理职位
140
+ cold-msg jobs list
141
+ cold-msg jobs add --title "高级算法工程师" --qual "NLP, LLM, 3年+" --loc "北京"
142
+ cold-msg jobs import --file jobs.yaml
143
+ cold-msg jobs export --file jobs.json
144
+
145
+ # 管理邮件模板
146
+ cold-msg template show
147
+ cold-msg template set greeting "您好{FullName},您好!"
148
+ cold-msg template preview
149
+ cold-msg template reset
150
+ ```
151
+
152
+ ### Web 界面
153
+
154
+ ```bash
155
+ cold-msg web
156
+ ```
157
+
158
+ 浏览器访问 `http://127.0.0.1:6060`,提供三个页面:
159
+
160
+ | 页面 | 路径 | 功能 |
161
+ |------|------|------|
162
+ | 生成邮件 | `/` | 粘贴简历文本,一键生成冷邮件 |
163
+ | 职位管理 | `/jobs` | 增删改查职位,支持 YAML 导入导出 |
164
+ | 模板配置 | `/config` | 自定义邮件模板各字段,实时预览 |
165
+
166
+ ## REST API
167
+
168
+ | 方法 | 路径 | 说明 |
169
+ |------|------|------|
170
+ | POST | `/api/generate` | 生成冷邮件 |
171
+ | GET | `/api/config` | 获取当前配置 |
172
+ | POST | `/api/config` | 保存配置 |
173
+ | GET | `/api/jobs` | 获取职位列表 |
174
+ | POST | `/api/jobs` | 更新职位列表 |
175
+ | POST | `/api/jobs/import-yaml` | YAML 导入职位 |
176
+ | GET | `/api/email-template` | 获取邮件模板 |
177
+ | POST | `/api/email-template` | 更新邮件模板 |
178
+ | POST | `/api/email-template/preview` | 预览模板 |
179
+
180
+ 生成邮件请求示例:
181
+
182
+ ```bash
183
+ curl -X POST http://127.0.0.1:6060/api/generate \
184
+ -H "Content-Type: application/json" \
185
+ -d '{"resume_text": "张三,10年AI研发经验,精通大模型训练..."}'
186
+ ```
187
+
188
+ ## 邮件模板占位符
189
+
190
+ | 占位符 | 含义 | 替换来源 |
191
+ |--------|------|----------|
192
+ | `{FullName}` | 候选人全名 | AI 从简历自动识别 |
193
+ | `{TeamName}` | 招聘团队名称 | 配置项 `team_name` |
194
+ | `{CompanyDesc}` | 公司描述 | 配置项 `company_desc` |
195
+ | `{JobTitle}` | 推荐职位名称 | AI 根据匹配结果填入 |
196
+ | `{Location}` | 职位工作地点 | AI 根据匹配职位填入 |
197
+
198
+ ## 项目结构
199
+
200
+ ```
201
+ cold_msg/
202
+ ├── __init__.py # 包入口
203
+ ├── cli.py # CLI 命令行接口 (typer)
204
+ ├── core/
205
+ │ ├── config.py # 配置管理 (dataclass + yaml + dotenv)
206
+ │ ├── prompt.py # Prompt 构建
207
+ │ ├── llm.py # LLM 调用 (llmdog)
208
+ │ └── generator.py # 核心生成器
209
+ └── web/
210
+ ├── app.py # Flask Web 应用 + REST API
211
+ └── templates/ # HTML 模板
212
+ ├── index.html
213
+ ├── config.html
214
+ └── jobs.html
215
+ ```
216
+
217
+ ## 配置优先级
218
+
219
+ 从高到低:
220
+
221
+ 1. **环境变量** — `LLM_MODEL`, `COLDMSG_SENDER_NAME` 等
222
+ 2. **`.env` 文件** — 项目根目录
223
+ 3. **`config.yaml`** — 项目根目录
224
+ 4. **内置默认值**
225
+
226
+ ## 开发
227
+
228
+ ```bash
229
+ # 安装开发依赖
230
+ pip install -e ".[dev]"
231
+
232
+ # 代码检查
233
+ ruff check .
234
+
235
+ # 类型检查
236
+ mypy cold_msg
237
+
238
+ # 运行测试
239
+ pytest
240
+ ```
241
+
242
+ ## License
243
+
244
+ MIT
@@ -0,0 +1,215 @@
1
+ # ColdMsg - 招聘冷邮件智能生成工具
2
+
3
+ 基于候选人简历文本,利用 LLM 自动匹配职位并生成专业的招聘 Cold Email。
4
+
5
+ ## 功能特性
6
+
7
+ - **智能匹配**:AI 根据候选人技术背景自动匹配最合适的职位
8
+ - **模板可配**:邮件模板各字段均可自定义,支持占位符变量替换
9
+ - **多种使用方式**:Python 库 / CLI 命令行 / Web 界面
10
+ - **职位管理**:支持 YAML/JSON 导入导出,Web 端增删改查
11
+ - **配置灵活**:`.env` + `config.yaml` + 环境变量三层优先级
12
+
13
+ ## 安装
14
+
15
+ ```bash
16
+ pip install cold-msg
17
+ ```
18
+
19
+ 或从源码安装:
20
+
21
+ ```bash
22
+ git clone https://github.com/example/cold-msg.git
23
+ cd cold-msg
24
+ pip install -e .
25
+ ```
26
+
27
+ ## 快速开始
28
+
29
+ ### 1. 配置环境变量
30
+
31
+ ```bash
32
+ cp .env.example .env
33
+ ```
34
+
35
+ 编辑 `.env` 文件,填入 LLM 相关配置:
36
+
37
+ ```env
38
+ LLM_MODEL=deepseek-v3.1-terminus
39
+ COLDMSG_SENDER_NAME=Michael
40
+ COLDMSG_TEAM_NAME=高端招聘团队
41
+ ```
42
+
43
+ ### 2. 准备职位列表
44
+
45
+ 在项目根目录创建 `config.yaml`:
46
+
47
+ ```yaml
48
+ sender_name: Michael
49
+ team_name: 高端招聘团队
50
+ company_desc: 国际知名大型科技公司
51
+ llm_model: deepseek-v3.1-terminus
52
+
53
+ jobs:
54
+ - job_title: 大模型Agent专家
55
+ qualification: Agent,Agentic技术,博士,5年+经验
56
+ location: 北上深等
57
+ - job_title: 编译器实验室专家
58
+ qualification: 编译器技术精通,MLIR,LLVM,GCC,AI编译等
59
+ location: 北上深杭等
60
+
61
+ email_template:
62
+ sender_name: Michael
63
+ team_name: 高端招聘团队
64
+ company_desc: 国际知名大型科技公司
65
+ greeting: "您好{FullName},"
66
+ intro: "我来自{TeamName},很冒昧的给您发邮件。"
67
+ body: "我负责{CompanyDesc}招聘,向您推荐\"{JobTitle}\"的职位。"
68
+ location_line: "职位地点: {Location}"
69
+ closing: "如果您有兴趣具体了解的话,可以留个电话或者微信~"
70
+ sign_off: "祝颂商祺"
71
+ signature: "Michael"
72
+ ```
73
+
74
+ ## 使用方式
75
+
76
+ ### Python 库
77
+
78
+ ```python
79
+ from cold_msg import generate_cold_email
80
+
81
+ result = generate_cold_email(
82
+ resume_text="张三,10年AI研发经验,精通大模型训练、推理优化..."
83
+ )
84
+
85
+ if result.match_job_title:
86
+ print(f"推荐职位: {result.recommend_title}")
87
+ print(result.email_content)
88
+ else:
89
+ print("未匹配到合适职位")
90
+ ```
91
+
92
+ ### CLI 命令行
93
+
94
+ ```bash
95
+ # 生成冷邮件
96
+ cold-msg generate "张三,10年AI研发经验,精通大模型训练、推理优化..."
97
+
98
+ # 指定模型和输出文件
99
+ cold-msg generate "简历文本" --model deepseek-v3.1-terminus -o result.json
100
+
101
+ # 输出原始 JSON
102
+ cold-msg generate "简历文本" --raw
103
+
104
+ # 启动 Web 界面
105
+ cold-msg web --port 6060
106
+
107
+ # 查看配置
108
+ cold-msg config show
109
+
110
+ # 管理职位
111
+ cold-msg jobs list
112
+ cold-msg jobs add --title "高级算法工程师" --qual "NLP, LLM, 3年+" --loc "北京"
113
+ cold-msg jobs import --file jobs.yaml
114
+ cold-msg jobs export --file jobs.json
115
+
116
+ # 管理邮件模板
117
+ cold-msg template show
118
+ cold-msg template set greeting "您好{FullName},您好!"
119
+ cold-msg template preview
120
+ cold-msg template reset
121
+ ```
122
+
123
+ ### Web 界面
124
+
125
+ ```bash
126
+ cold-msg web
127
+ ```
128
+
129
+ 浏览器访问 `http://127.0.0.1:6060`,提供三个页面:
130
+
131
+ | 页面 | 路径 | 功能 |
132
+ |------|------|------|
133
+ | 生成邮件 | `/` | 粘贴简历文本,一键生成冷邮件 |
134
+ | 职位管理 | `/jobs` | 增删改查职位,支持 YAML 导入导出 |
135
+ | 模板配置 | `/config` | 自定义邮件模板各字段,实时预览 |
136
+
137
+ ## REST API
138
+
139
+ | 方法 | 路径 | 说明 |
140
+ |------|------|------|
141
+ | POST | `/api/generate` | 生成冷邮件 |
142
+ | GET | `/api/config` | 获取当前配置 |
143
+ | POST | `/api/config` | 保存配置 |
144
+ | GET | `/api/jobs` | 获取职位列表 |
145
+ | POST | `/api/jobs` | 更新职位列表 |
146
+ | POST | `/api/jobs/import-yaml` | YAML 导入职位 |
147
+ | GET | `/api/email-template` | 获取邮件模板 |
148
+ | POST | `/api/email-template` | 更新邮件模板 |
149
+ | POST | `/api/email-template/preview` | 预览模板 |
150
+
151
+ 生成邮件请求示例:
152
+
153
+ ```bash
154
+ curl -X POST http://127.0.0.1:6060/api/generate \
155
+ -H "Content-Type: application/json" \
156
+ -d '{"resume_text": "张三,10年AI研发经验,精通大模型训练..."}'
157
+ ```
158
+
159
+ ## 邮件模板占位符
160
+
161
+ | 占位符 | 含义 | 替换来源 |
162
+ |--------|------|----------|
163
+ | `{FullName}` | 候选人全名 | AI 从简历自动识别 |
164
+ | `{TeamName}` | 招聘团队名称 | 配置项 `team_name` |
165
+ | `{CompanyDesc}` | 公司描述 | 配置项 `company_desc` |
166
+ | `{JobTitle}` | 推荐职位名称 | AI 根据匹配结果填入 |
167
+ | `{Location}` | 职位工作地点 | AI 根据匹配职位填入 |
168
+
169
+ ## 项目结构
170
+
171
+ ```
172
+ cold_msg/
173
+ ├── __init__.py # 包入口
174
+ ├── cli.py # CLI 命令行接口 (typer)
175
+ ├── core/
176
+ │ ├── config.py # 配置管理 (dataclass + yaml + dotenv)
177
+ │ ├── prompt.py # Prompt 构建
178
+ │ ├── llm.py # LLM 调用 (llmdog)
179
+ │ └── generator.py # 核心生成器
180
+ └── web/
181
+ ├── app.py # Flask Web 应用 + REST API
182
+ └── templates/ # HTML 模板
183
+ ├── index.html
184
+ ├── config.html
185
+ └── jobs.html
186
+ ```
187
+
188
+ ## 配置优先级
189
+
190
+ 从高到低:
191
+
192
+ 1. **环境变量** — `LLM_MODEL`, `COLDMSG_SENDER_NAME` 等
193
+ 2. **`.env` 文件** — 项目根目录
194
+ 3. **`config.yaml`** — 项目根目录
195
+ 4. **内置默认值**
196
+
197
+ ## 开发
198
+
199
+ ```bash
200
+ # 安装开发依赖
201
+ pip install -e ".[dev]"
202
+
203
+ # 代码检查
204
+ ruff check .
205
+
206
+ # 类型检查
207
+ mypy cold_msg
208
+
209
+ # 运行测试
210
+ pytest
211
+ ```
212
+
213
+ ## License
214
+
215
+ MIT
@@ -0,0 +1,7 @@
1
+ """cold-msg: 招聘冷邮件智能生成工具"""
2
+
3
+ __version__ = "0.1.0"
4
+
5
+ from cold_msg.core.generator import generate_cold_email
6
+
7
+ __all__ = ["generate_cold_email", "__version__"]