Skip to content

Commit f81010f

Browse files
authored
Merge pull request #10 from jihe520/dev
更新正确获取文献引用 添加了建模手agent 为每个agent设置不同模型 修改文档 修改部分架构设计和算法逻辑 获得新的 bug
2 parents f95e261 + 734747a commit f81010f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1642
-3050
lines changed

README.md

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,15 @@
2424
## ✨ 功能特性
2525

2626
- 🔍 自动分析问题,数学建模,编写代码,纠正错误,撰写论文
27-
- 💻 本地代码解释器
27+
- 💻 Code Interperter
28+
- loacl Interperter: 基于 jupyter , 代码保存为 notebook 方便再编辑
29+
- 云端 code interperter: [E2B](https://e2b.dev/)[daytona](https://app.daytona.io/)
2830
- 📝 生成一份编排好格式的论文
29-
- 🤝 muti-agents: ~~建模手~~,代码手(反思模块,本地代码解释器),论文手
30-
- 🔄 muti-llms: 每个agent设置不同的模型
31-
- 💰 成本低 agentless(单次任务成本约 1 rmb)
31+
- 🤝 muti-agents: 建模手,代码手,论文手等
32+
- 🔄 muti-llms: 每个 agent 设置不同的、合适的模型
33+
- 🤖 支持所有模型: [litellm](https://docs.litellm.ai/docs/providers)
34+
- 💰 成本低:workflow agentless,不依赖 agent 框架
35+
- 🧩 自定义模板:prompt inject 为每个 subtask 单独设置需求
3236

3337
## 🚀 后期计划
3438

@@ -38,14 +42,18 @@
3842
- [ ] 英文支持(美赛)
3943
- [ ] 集成 latex 模板
4044
- [ ] 接入视觉模型
41-
- [ ] 添加正确文献引用
45+
- [x] 添加正确文献引用
4246
- [x] 更多测试案例
4347
- [ ] docker 部署
44-
- [ ] 引入用户的交互(选择模型,重写等等)
48+
- [ ] human in loop: 引入用户的交互(选择模型,@agent重写,等等)
49+
- [ ] feedback: evaluate the result and modify
4550
- [x] codeinterpreter 接入云端 如 e2b 等供应商..
4651
- [ ] 多语言: R 语言, matlab
47-
- [ ] 绘图 napki,draw.io
52+
- [ ] 绘图 napki,draw.io,plantuml,svg, mermaid.js
4853
- [ ] 添加 benchmark
54+
- [ ] web search tool
55+
- [ ] RAG 知识库
56+
- [ ] A2A hand off: 代码手多次反思错误,hand off 更聪明模型 agent
4957

5058
## 视频demo
5159

@@ -55,6 +63,10 @@
5563
> 项目处于实验探索迭代demo阶段,有许多需要改进优化改进地方,我(项目作者)很忙,有时间会优化更新
5664
> 欢迎贡献
5765
66+
67+
案例参考 [demo](./demo/) 文件夹下
68+
**如果你有跑出来好的案例可以提交 PR 在该目录下**
69+
5870
## 📖 使用教程
5971

6072
> 确保电脑中安装好 Python, Nodejs, **Redis** 环境
@@ -63,19 +75,13 @@
6375
6476

6577

66-
1. 配置模型
78+
1. 配置环境变量
6779

6880
复制`/backend/.env.dev.example``/backend/.env.dev`(删除`.example` 后缀)
69-
填写配置模型和 APIKEY
70-
推荐模型能力较强的、参数量大的模型。
7181

72-
```bash
73-
# support all model, check out https://docs.litellm.ai/docs/
74-
API_KEY=
75-
# gpt-4.1,deepseek/deepseek-chat
76-
MODEL=
77-
# 确保安装 Redis
78-
```
82+
**配置环境变量**
83+
84+
推荐模型能力较强的、参数量大的模型。
7985

8086
复制`/fronted/.env.example``/fronted/.env`(删除`.example` 后缀)
8187

@@ -91,6 +97,8 @@ git clone https://github.com/jihe520/MathModelAgent.git # 克隆项目
9197

9298
启动后端
9399

100+
*启动 redis*
101+
94102
```bash
95103
cd backend # 切换到 backend 目录下
96104
pip install uv # 推荐使用 uv 管理 python 项目
@@ -114,10 +122,18 @@ pnpm i #确保电脑安装了 pnpm
114122
pnpm run dev
115123
```
116124

125+
[教程](./docs/md/tutorial.md)
117126

118127
运行的结果和产生在`backend/project/work_dir/xxx/*`目录下
119128
- notebook.ipynb: 保存运行过程中产生的代码
120-
- res.md: 保存最后运行产生的结果为 markdown 格式,使用 markdown 转 word(研究下 pandoc)
129+
- res.md: 保存最后运行产生的结果为 markdown 格式
130+
131+
有没有自动部署的脚本 ?
132+
[mmaAutoSetupRun](https://github.com/Fitia-UCAS/mmaAutoSetupRun)
133+
134+
需要自定义自定义提示词模板 template ?
135+
Prompt Inject : [prompt](./backend/app/config/md_template.toml)
136+
121137

122138
## 🤝 贡献和开发
123139

@@ -134,7 +150,8 @@ clone 项目后,下载 **Todo Tree** 插件,可以查看代码中所有具
134150

135151
## 📄 版权License
136152

137-
个人免费使用,请勿商业用途,商业用途联系我(作者)
153+
个人免费使用,请勿商业用途。
154+
[License](./docs/md/License.md)
138155

139156
## 🙏 Reference
140157

@@ -147,10 +164,18 @@ Thanks to the following projects:
147164

148165
## 其他
149166

167+
### Sponsor
168+
169+
[Buy Me a Coffee](./docs/sponser.md)
170+
150171
感谢赞助
151172
[danmo-tyc](https://github.com/danmo-tyc)
152173

174+
### GROUP
175+
153176
有问题可以进群问
154177
[QQ 群:699970403](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=rFKquDTSxKcWpEhRgpJD-dPhTtqLwJ9r&authKey=xYKvCFG5My4uYZTbIIoV5MIPQedW7hYzf0%2Fbs4EUZ100UegQWcQ8xEEgTczHsyU6&noverify=0&group_code=699970403)
155178

156-
<img src="./docs/qq.jpg" height="400px">
179+
<div align="center">
180+
<img src="./docs/qq.jpg" height="400px">
181+
</div>

backend/.env.dev.example

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,27 @@
11
ENV=dev
22
# support all model, check out https://docs.litellm.ai/docs/
3-
API_KEY=
4-
# gpt-4.1,deepseek/deepseek-chat
5-
MODEL=
3+
# e.g. gpt-4.1,deepseek/deepseek-chat
4+
# 为每个 agent 配置合适的模型
5+
COORDINATOR_API_KEY=
6+
COORDINATOR_MODEL=
7+
# COORDINATOR_BASE_URL= 如果需要中转自定义等
8+
9+
# 推荐 thinking model
10+
MODELER_API_KEY=
11+
MODELER_MODEL=
12+
# MODELER_BASE_URL=
13+
14+
CODER_API_KEY=
15+
CODER_MODEL=
16+
# CODER_BASE_URL=
17+
18+
WRITER_API_KEY=
19+
WRITER_MODEL=
20+
# WRITER_BASE_URL=
21+
22+
DEFAULT_API_KEY=
23+
DEFAULT_MODEL=
24+
# DEFAULT_BASE_URL=
625

726
# 模型最大问答次数
827
MAX_CHAT_TURNS=60
@@ -12,6 +31,8 @@ MAX_RETRIES=5
1231
# 不需要填,默认调用本地 Python
1332
# E2B_API_KEY=
1433
SERVER_HOST=http://localhost:8000
34+
# 使用 email 注册账号从 https://openalex.org/ 文献
35+
OPENALEX_EMAIL=
1536

1637
LOG_LEVEL=DEBUG
1738
DEBUG=true

backend/app/config/md_template.toml

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
11
firstPage = """
22
# 标题: 基于全文取一个标题
33
例子:基于哈里斯鹰算法的农业种植优化模型研究
4-
54
摘要
65
第一段:背景
7-
例子:随着农业现代化的推进,农业种植问题逐渐成为乡村发展中的关键课题之一
86
大约100字
97
10-
第二段:针对问题一,根据问题一回答,使用到什么模型,如何去构建该模型,做了什么工作,得到什么结果,一些具体的数值
11-
大约170字
12-
13-
每个问题都需要单独撰写一段,与上面相同要求
8+
每个问题都需要按照下面类似的单独撰写成一段'\n',不要分点叙述。
9+
针对问题几,根据问题几回答,使用到什么模型,如何去构建该模型,做了什么工作,得到什么结果,一些具体的数值
10+
每段大约170字
1411
1512
最后一段:总结敏感性分析使用和效果,结论。
1613
大约150字
1714
18-
注意:每段都是按段落编写,不要分点叙述。
19-
2015
关键词: 用到的模型等,关键词大约4/5个,没有标号
2116
例子:HHO MOHHO 遗传算法 Mealpy 蒙特卡洛模拟 规划问题
2217
@@ -25,22 +20,17 @@ firstPage = """
2520
{问题}
2621
{模型的建立与求解}
2722
"""
28-
2923
RepeatQues = """
3024
# 一、问题重述
3125
## 1.1 问题背景
32-
33-
根据题目总结问题背景
26+
查询文献
27+
根据题目总结问题背景(查询文献)
3428
格式:一段话
3529
大约160字
3630
## 1.2 问题重述
3731
参考模板如下
3832
本文基于以上信息建立数学模型来解决以下问题。
39-
- 问题1:考虑农作物的预期销售量、种植成本、亩产量及销售价格与2023年持平的情况下,提出2024至2030年乡村农作物的最优种植方案。
40-
- 并且对于预计销售量的结果在两种情况下进行计算:(1)超出部分滞销浪费;(2)超出部分以2023年销售价格的50%售出。
41-
- 问题2:在考虑农作物预期销售量、亩产量、种植成本、销售价格以及气候、市场变化等不确定因素的情况下,给出2024至2030年的最优种植方案,并充分评估种植风险。
42-
- 问题3:进一步考虑不同农作物之间的可替代性和互补性,销售量、价格和成本之间的相关性,通过数据模拟,求解最优种植策略,并与问题2的结果进行比较。
43-
- 如果还有问题
33+
分点叙述
4434
4535
**参考下面的题目要求和问题,按照上面模板和要求完成 **问题重述中的问题背景和问题重述**
4636
@@ -70,7 +60,6 @@ modelAssumption = """
7060
写大概3/4条,下面例子:
7161
(1) 数据有效性:假设所用数据真实可靠
7262
(2) 市场稳定性:假设农业种植中没有自然灾害、政府政策等因素影响。
73-
(3) 农民自主性:假设2023年农作物的销量为农民农作物全年产量。
7463
7564
参考下面的模型的建立与求解 和 题目 ,按照上面模板和要求完成 **模型的假设**
7665
@@ -97,12 +86,10 @@ symbol = """
9786
9887
{模型的建立与求解}
9988
"""
100-
10189
eda = """
10290
## 4.2 描述性统计
10391
大约200字
10492
"""
105-
10693
ques1 = """模板和要求如下
10794
# 五、模型的建立与求解
10895
## 5.1 问题一模型的建立与求解
@@ -122,7 +109,6 @@ ques2 = """参考模板
122109
模型的求解过程
123110
大约600字
124111
"""
125-
126112
ques3 = """参考模板
127113
## 5.3 问题三模型的建立与求解
128114
### 5.3.1 模型的建立
@@ -132,7 +118,6 @@ ques3 = """参考模板
132118
模型的求解过程
133119
大约600字
134120
"""
135-
136121
ques4 = """参考模板
137122
## 5.4 问题四模型的建立与求解
138123
### 5.4.1 模型的建立
@@ -142,7 +127,6 @@ ques4 = """参考模板
142127
模型的求解过程
143128
大约600字
144129
"""
145-
146130
ques5 = """参考模板
147131
## 5.5 问题五模型的建立与求解
148132
### 5.5.1 模型的建立
@@ -152,7 +136,6 @@ ques5 = """参考模板
152136
模型的求解过程
153137
大约600字
154138
"""
155-
156139
ques6 = """参考模板
157140
## 5.6 问题六模型的建立与求解
158141
### 5.6.1 模型的建立
@@ -162,28 +145,15 @@ ques6 = """参考模板
162145
模型的求解过程
163146
大约600字
164147
"""
165-
166148
sensitivity_analysis = """参考模板
167149
# 六、模型的分析与检验
168150
## 6.1 灵敏度分析
169151
"""
170-
171152
judge = """参考模板和要求
172153
# 七、模型的评价、改进与推广
173154
## 7.1 模型的优点
174155
## 7.2 模型的缺点
175156
## 7.3 模型的改进与推广
176157
优点数量要多于缺点,缺点大约2/3个
177158
大约200字
178-
"""
179-
180-
reference = """
181-
# 参考文献
182-
[1] 作者. (年份). 题目. 期刊, 卷(期), 页码.
183-
[2] 作者. (年份). 题目. 期刊, 卷(期), 页码.
184-
[3] 作者. (年份). 题目. 期刊, 卷(期), 页码.
185-
186-
例子
187-
[1] 刘培杰,李军英.体验式营销模式对农业旅游经济发展的影响[J].山西农经,2024,(16):67-69.DOI:10.16675/j.cnki.cn14-1065/f.2024.16.019.
188-
[2] ..
189159
"""

backend/app/config/setting.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,27 @@ def parse_cors(value: str) -> list[str]:
1717

1818
class Settings(BaseSettings):
1919
ENV: str
20-
API_KEY: str
21-
MODEL: str
22-
BASE_URL: Optional[str] = None
20+
21+
COORDINATOR_API_KEY: str
22+
COORDINATOR_MODEL: str
23+
COORDINATOR_BASE_URL: Optional[str] = None
24+
25+
MODELER_API_KEY: str
26+
MODELER_MODEL: str
27+
MODELER_BASE_URL: Optional[str] = None
28+
29+
CODER_API_KEY: str
30+
CODER_MODEL: str
31+
CODER_BASE_URL: Optional[str] = None
32+
33+
WRITER_API_KEY: str
34+
WRITER_MODEL: str
35+
WRITER_BASE_URL: Optional[str] = None
36+
37+
DEFAULT_API_KEY: str
38+
DEFAULT_MODEL: str
39+
DEFAULT_BASE_URL: Optional[str] = None
40+
2341
MAX_CHAT_TURNS: int
2442
MAX_RETRIES: int
2543
E2B_API_KEY: Optional[str] = None
@@ -29,6 +47,7 @@ class Settings(BaseSettings):
2947
REDIS_MAX_CONNECTIONS: int
3048
CORS_ALLOW_ORIGINS: Annotated[list[str] | str, BeforeValidator(parse_cors)]
3149
SERVER_HOST: str = "http://localhost:8000" # 默认值
50+
OPENALEX_EMAIL: Optional[str] = None
3251

3352
model_config = SettingsConfigDict(
3453
env_file=".env.dev",
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from .coder_agent import CoderAgent
2+
from .writer_agent import WriterAgent
3+
from .coordinator_agent import CoordinatorAgent
4+
from .modeler_agent import ModelerAgent
5+
6+
__all__ = [
7+
"CoderAgent",
8+
"WriterAgent",
9+
"CoordinatorAgent",
10+
"ModelerAgent",
11+
]

0 commit comments

Comments
 (0)