À propos du projet
OpenAI Harmony est une bibliothèque pour travailler avec le format de réponse harmony, la structure de conversation sur laquelle les modèles open-weight gpt-oss d'OpenAI ont été entraînés. Selon le README, gpt-oss ne doit pas être utilisé sans le format harmony, car il ne fonctionnera pas correctement. Les utilisateurs qui accèdent à gpt-oss via une API ou des fournisseurs tels que HuggingFace, Ollama ou vLLM n'ont pas besoin de gérer le formatage eux-mêmes, car la solution d'inférence le fait. La bibliothèque cible les développeurs construisant leurs propres solutions d'inférence.
Le format est conçu pour imiter l'API Responses d'OpenAI et prend en charge plusieurs canaux de sortie pour le raisonnement en chaîne, les préambules d'appel d'outils, les réponses régulières, les espaces de noms d'outils, les sorties structurées et une hiérarchie d'instructions. Le README inclut un exemple de prompt montrant des messages système, développeur et utilisateur avec des définitions d'outils.
Caractéristiques clés déclarées :
- Formatage cohérent : une implémentation partagée pour le rendu et le parsing maintient les séquences de jetons sans perte.
- Performance : le travail lourd est implémenté en Rust.
- Support Python : installable via pip, avec des stubs typés et une parité de tests avec la suite Rust.
Le dépôt contient une crate Rust (structures de données de chat, encodage/rendu et parsing, registre d'encodages intégré, tests et liaisons PyO3) ainsi qu'un wrapper purement Python exposant des dataclasses et une API d'assistance. L'installation Python se fait via `pip install openai-harmony` ou `uv pip install openai-harmony` ; l'utilisation Rust ajoute la crate comme dépendance git dans Cargo.toml. Les exemples montrent le chargement de l'encodage HARMONY_GPT_OSS, la construction d'une Conversation à partir de messages, son rendu pour complétion et le parsing des messages à partir des jetons de complétion.
Pour le développement local, les prérequis sont une chaîne d'outils Rust stable, Python 3.8+ avec un environnement virtuel et maturin. Le flux de travail utilise `maturin develop --release` pour compiler la crate Rust et installer le package Python en mode éditable. Les tests s'exécutent avec `cargo test` pour Rust et `pytest` pour Python, la suite Python étant décrite comme un port un-à-un des tests Rust. Les outils optionnels incluent mypy pour la vérification de types, ruff pour le linting et cargo fmt pour le formatage.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.