OpenPO Preference Dataset
收藏资源简介:
OpenPO Preference Dataset 是一个开源库,用于简化从200多个大型语言模型(LLMs)中收集、管理和利用偏好数据的过程。通过自动化不同LLM输出的比较和收集人类偏好,帮助开发者以最小的努力构建更好、更精细调优的语言模型。
OpenPO Preference Dataset is an open-source library that simplifies the process of collecting, managing, and leveraging preference data from over 200 large language models (LLMs). By automating the comparison of outputs from different LLMs and the collection of human preferences, it helps developers build better, more finely-tuned language models with minimal effort.
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




