You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
3.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# pip install dashscope python-dotenv
from pathlib import Path
import dashscope
from dashscope import Generation
from dashscope.api_entities.dashscope_response import DashScopeAPIResponse
class TestDeepSeek:
# 模型版本常量
R1 = "deepseek-r1"
V3 = "deepseek-v3"
# API密钥建议从环境变量读取
API_KEY = "sk-01d13a39e09844038322108ecdbd1bbc"
@staticmethod
def get_system_prompt() -> str:
"""读取系统提示文件"""
md_path = Path(r"D:\dsWork\QingLong\PptGenerator\md-file\readme\default.md")
if not md_path.exists():
raise FileNotFoundError(f"提示文件不存在: {md_path}")
return md_path.read_text(encoding='utf-8')
@classmethod
def call_with_message(cls) -> DashScopeAPIResponse:
"""调用生成API"""
system_prompt = (
"返回的教案内容请严格按照指定的markdown语法格式返回用来生成ppt。"
"需要注意:1、最开头的Title:..,Author: ... Date:... 不能省略掉,有用处。"
"2、第一级用#,第二级用##,第二级是独立的PPT一个页每页中的数据必须有> 开头,"
"如果是页面中的条目,必须用 - 开头,结果不要返回图片!请仔细阅读参考格式:"
) + cls.get_system_prompt()
try:
return Generation.call(
model=cls.R1,
api_key=cls.API_KEY,
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": "请帮我生成一个小学数学内角和的教案,按标准格式输出。"}
],
result_format='message' # 与Java的GenerationParam.ResultFormat.MESSAGE对应
)
except Exception as e: # 根据实际SDK异常类型细化
raise RuntimeError(f"API调用失败: {str(e)}") from e
@classmethod
def main(cls):
"""主执行方法"""
try:
result = cls.call_with_message()
if result.status_code == 200 and result.output:
md_content = result.output.choices[0].message.content
print(md_content)
output_path = Path(r"D:\dsWork\QingLong\PptGenerator\md-file\readme\5.md")
output_path.parent.mkdir(parents=True, exist_ok=True)
output_path.write_text(md_content, encoding='utf-8')
print(f"结果已保存至: {output_path}")
else:
print(f"请求失败,状态码: {result.status_code}, 原因: {result.message}")
except Exception as e:
print(f"发生错误: {str(e)}")
print("请参考文档https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
if __name__ == "__main__":
dashscope.api_key = TestDeepSeek.API_KEY
TestDeepSeek.main()