python实现根据接口返回数据生成报告和图表
背景
现在想要通过prompt实现生成日报且中间插入图片,并且是markdown的形式。大概实现思路是使用python中类似反射的思路实现上述功能,由大模型生成代码,运行时生成代码且执行。
import requests
import json
import re# -------------------------------
# 1️⃣ 配置 DeepSeek API
# -------------------------------
API_KEY = 'sk-23ef0511ccec4b729f76e0a62bef75904'
API_URL = 'https://api.deepseek.com/v1/chat/completions'# -------------------------------
# 2️⃣ 准备任务数据
# -------------------------------
task_data = [{"任务": "需求分析", "开始": "2025-08-01", "结束": "2025-08-05", "负责人": "Alice"},{"任务": "设计", "开始": "2025-08-06", "结束": "2025-08-10", "负责人": "Bob"},{"任务": "开发", "开始": "2025-08-11", "结束": "2025-08-20", "负责人": "Charlie"},{"任务": "测试", "开始": "2025-08-21", "结束": "2025-08-25", "负责人": "Alice"}
]# -------------------------------
# 3️⃣ 构建 Prompt
# -------------------------------
prompt = f"""
请根据以下任务数据生成 Python 代码:
1. 使用 pandas 处理任务数据
2. 使用 matplotlib 绘制甘特图
3. 使用 python-docx 生成 Word 报告,包含:- 插入文字报告总结- 插入甘特图图片
4. 输出完整 Python 代码,不要解释,不要任何额外文字任务数据:
{json.dumps(task_data, ensure_ascii=False, indent=2)}
"""# -------------------------------
# 4️⃣ 调用 DeepSeek API 获取代码
# -------------------------------
headers = {'Authorization': f'Bearer {API_KEY}','Content-Type': 'application/json'
}data = {'model': 'deepseek-chat','messages': [{'role': 'user', 'content': prompt}],'temperature': 0.5
}response = requests.post(API_URL, headers=headers, json=data)
response.raise_for_status()
generated_code = response.json()['choices'][0]['message']['content']# -------------------------------
# 5️⃣ 清洗代码(去掉 Markdown 代码块)
# -------------------------------
clean_code = re.sub(r"```(?:python)?\n", "", generated_code)
clean_code = re.sub(r"```", "", clean_code)# -------------------------------
# 6️⃣ 执行生成的代码
# -------------------------------
exec(clean_code)print("报告已生成:项目进度报告.docx")