Skip to content

Repository files navigation

myllm-toolkit

本工具库提供了 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,用于演示对比效果)

💡 具体用法

0. 模型 API 配置

请先配置 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 中提供 providermodel 调用即可。

配置完成后,可以先调用 chatbot.py 来测试 API 是否能正常工作。

1. 模型打标基本链路

save_prompt.pybuild_sft_dataset.pycall_llm_api.py 构成了提示词工程的一个基本链路。

1.1 撰写提示词:

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

1.2构建数据集

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

1.3 调用 API

选择合适的模型, 调用 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

(脚本支持断点续传, 即使中途失败, 重新运行此命令即可。)

1.4⚡后续 SFT :

后续做 SFT 取 conversation[0]["value"] - conversation[1]["value"] 作为一个训练样本即可。

2. 结果可视化小工具

利用qt提供了两个简单的可视化工具,方便查看不同prompt下的效果。

2.1 浏览单个文件

得到sft_dataset_single_result.jsonl后,可以利用viewer/browse_single_results.py查看结果

python viewer/browse_single_results.py

程序将弹窗让选择需要查看的 .jsonl 文件, 按 A/D 键翻页

2.2 浏览两个文件

当用不同提示词或不同模型跑出了两个结果文件时,可以使用对比工具:

python viewer/compare_double_results.py

程序将弹窗让先后选择两个 .jsonl 文件, 脚本会自动匹配相同 ID 并排显示并对比结果

🧐TODO

  • 添加分类问题和检测问题的指标计算相关脚本

  • 添加针对模型在分类问题和检测问题回答的解析脚本

About

Some demo and tools of using llm

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages