本工具库提供了 LLM API 调用与数据处理工作流作为参考,后续会逐步完善。
-
数据构建: build_sft_dataset.py 从图像文件夹生成 SFT / API 调用的 .jsonl 格式。
-
批量调用: call_llm_api.py 调用模型api,支持异步调用、断点续传和即时保存。
-
结果可视化: viewer/ 目录包括两个简单的可视化工具,用于浏览单个结果和对比两个实验的结果。
-
配置设置: 可以通过 config/api_config.yaml 添加和管理自己的API和模型。
/myllm-toolkit/
│
├── .gitignore
├── README.md <-- (当前正在阅读的文件)
├── requirements.txt <-- (项目依赖)
├── .env.example <-- (API Key 模板)
│
├── config/
│ └── api_config.yaml <-- (模型配置文件)
│
├── llm_toolkit/
│ ├── __init__.py
│ └── config_manager.py <-- (解析 api_config.yaml)
│
├── chatbot.py <-- (脚本: 简单的 API 测试)
├── save_prompt.py <-- (脚本: 管理提示词)
├── build_sft_dataset.py <-- (脚本: 构建数据集)
├── call_llm_api.py <-- (脚本: 核心 - 批量调用 API)
│
├── viewer/
│ ├── browse_single_results.py <-- (GUI: 浏览单个 .jsonl 文件)
│ └── compare_double_results.py <-- (GUI: 对比两个 .jsonl 文件)
│
└── example/
├── images <-- (示例:测试图像)
├── prompt_text.txt <-- (示例:撰写 prompt 的 txt)
├── pe.json <-- (示例:存放不同版本 prompt 的 json 文件)
├── sft_dataset_single.jsonl <-- (示例:转换的SFT / API 调用的 .jsonl 格式)
├── sft_dataset_single_result.jsonl <-- (示例:API 调用后带有 LLM 回复的 jsonl. 文件)
└── sft_dataset_single_compare.jsonl <-- (示例:同sft_dataset_single_result.jsonl,用于演示对比效果)
请先配置 config/api_config.yaml,添加对应模型 API 的环境变量,并添加相应的模型供应商和模型名称来完成调用。
基本格式如下:
openai: # 模型提供商(provider)
api_key_env: "UNIFIED_API_KEY" # API-KEY,请事先添加环境变量
base_url: "https://api.agicto.cn/v1" # 模型的访问网址,如果采用聚合 API-KEY,使用该网址即可
models:
"gpt-5": "混合推理模型,MLLM,不会输出思维链具体内容" # 模型名称(model):基本注释
"gpt-5-chat-latest": "混合推理模型,MLLM,不会输出思维链具体内容"如有个人需求,可以仿照上述格式在 YAML 文件中添加相应的模型并配置环境变量,然后在 call_llm_api.py 中提供 provider 和 model 调用即可。
配置完成后,可以先调用 chatbot.py 来测试 API 是否能正常工作。
到 example/prompt_text.txt (任意txt均可) 中撰写提示词, 执行 save_prompt.py 将提示词保存到 pe.json 中。
python save_prompt.py --input_file ./example/prompt_text.txt --output_file ./example/pe.json从 pe.json 中加载合适的提示词,准备好图像数据集,调用 build_sft_dataset.py,构建调用模型 API 格式的数据。
该部分参数较多,建议在代码中直接进行修改运行
单图模式示例:
# 使用 images/ 目录中的所有图像, 使用 pe.json 中idx为 2 的提示词, 模式为 "single"
python build_sft_dataset.py --image_dir ./example/images --output_file ./example/sft_dataset_single.jsonl --pe_json_path ./example/pe.json --prompt_idx 2 --mode single多图模式示例:
# 指定 --mode 为multi,前缀模式
python build_sft_dataset.py --image_dir ./example/images --output_file ./example/sft_dataset_multi.jsonl --pe_json_path ./example/pe.json --prompt_idx 2 --mode multi --multi_mode prefix选择合适的模型, 调用 call_llm_api.py,得到打标后的结果。
请先配置环境变量(api-key见群里文档说明),如有需要可以修改 config/api_config.yaml ,添加相应的模型供应商和模型名称来完成调用。
该部分参数较多,建议在代码中直接进行修改运行
# 示例: 使用 openai-gpt-5, 处理 sft_dataset_single.jsonl, 结果保存到 sft_dataset_single_result.jsonl, 并发数为 5
python call_llm_api.py --provider openai --model gpt-4.1 --input_file ./example/sft_dataset_single.jsonl --output_file ./example/sft_dataset_single_result.jsonl --concurrency 5(脚本支持断点续传, 即使中途失败, 重新运行此命令即可。)
后续做 SFT 取 conversation[0]["value"] - conversation[1]["value"] 作为一个训练样本即可。
利用qt提供了两个简单的可视化工具,方便查看不同prompt下的效果。
得到sft_dataset_single_result.jsonl后,可以利用viewer/browse_single_results.py查看结果
python viewer/browse_single_results.py程序将弹窗让选择需要查看的 .jsonl 文件, 按 A/D 键翻页
当用不同提示词或不同模型跑出了两个结果文件时,可以使用对比工具:
python viewer/compare_double_results.py程序将弹窗让先后选择两个 .jsonl 文件, 脚本会自动匹配相同 ID 并排显示并对比结果
-
添加分类问题和检测问题的指标计算相关脚本
-
添加针对模型在分类问题和检测问题回答的解析脚本