OpenPO Preference Dataset
收藏OpenPO 🐼
概述
OpenPO 是一个开源库,旨在简化收集、管理和利用偏好数据以优化大型语言模型(LLM)的过程。通过自动化不同LLM输出的比较并收集人类偏好,OpenPO帮助开发者以最小的努力构建更好、更精细调优的语言模型。
主要功能
- 多LLM支持:支持从HuggingFace和OpenRouter调用任何模型,包括GPT、Claude、Llama和Mixtral等流行模型。
- OpenAI API兼容性:无缝集成OpenAI风格的客户端API,便于迁移和熟悉的开发者体验。
- 灵活存储:可插拔的适配器支持多种数据持久化选项。
- 精细调优准备:结构化数据输出,可立即用于模型精细调优和偏好优化。
安装
从PyPI安装(推荐)
使用pip安装OpenPO: bash pip install openpo
从源码安装
克隆仓库后运行以下命令: bash cd openpo poetry install
快速开始
默认情况下,OpenPO客户端使用HuggingFace的InferenceClient调用HuggingFace Model Hub上的模型。
python import os from openpo.client import OpenPO
client = OpenPO(api_key="your-huggingface-api-key")
response = client.chat.completions.create_preference( model="Qwen/Qwen2.5-Coder-32B-Instruct", messages=[ {"role": "system", "content": PROMPT}, {"role": "system", "content": MESSAGE}, ], diff_frequency=0.5, # 生成偏好响应50%的时间 )
print(response.choices[0].message.content)
OpenPO也支持OpenRouter。
python import os from openpo.client import OpenPO
client = OpenPO( api_key=your-openrouter-api-key, base_url="https://openrouter.ai/api/v1/chat/completions" )
response = client.chat.completions.create_preference( model= "qwen/qwen-2.5-coder-32b-instruct", message=[ {"role": "system", "content": PROMPT}, {"role": "user", "content": MESSAGE}, ], diff_frequency=0.5 )
print(response.choices[0].message.content)
可以通过pref_params参数控制第二个响应的随机性。当前支持的参数包括temperature和frequency_penalty。
python response = client.chat.completions.create_preference( model="Qwen/Qwen2.5-Coder-32B-Instruct", message=[ {"role": "system", "content": PROMPT}, {"role": "user", "content": MESSAGE}, ], diff_frequency=0.5, pref_params={"temperature": 1.5, "frequency_penalty": 0.5}, )
数据保存
使用提供者轻松上传和下载数据。
python import os from openpo.client import OpenPO from openpo.providers.huggingface import HuggingFaceStorage
storage = HuggingFaceStorage(repo_id="my-dataset-repo", api_key="hf-token") client = OpenPO(api_key="your-huggingface-token")
preference = {} # 偏好数据需要以{"prompt": ..., "preferred": ..., "rejected": ...}格式保存以进行精细调优 storage.save_data(data=preference, filename="my-data.json")
结构化输出(JSON模式)
OpenPO支持使用Pydantic模型进行结构化输出。
python from pydantic import BaseModel from openpo.client import OpenPO
client = OpenPO(api_key="your-huggingface-api-key")
class ResponseModel(BaseModel): response: str
res = client.chat.completions.create_preference( model="Qwen/Qwen2.5-Coder-32B-Instruct", messages=[ {"role": "system", "content": PROMPT}, {"role": "system", "content": MESSAGE}, ], diff_frequency=0.5, response_format=ResponseModel, )
试用
设置环境变量后运行以下命令以在本地试用演示: bash export HF_API_KEY=<your-api-key> docker compose up --build




