Méthodes de sortie des données structurées des grands modèles : une liste de ressources JSON du LLM

Cette liste se concentre sur les ressources liées à la génération de JSON ou d'autres sorties structurées à l'aide du Large Language Model (LLM).

Une liste de ressources pour générer JSON en utilisant LLM via des appels de fonction, des outils, des CFG, etc., couvrant les bibliothèques, les modèles, les carnets de notes, et plus encore.

 

répertoire (sur le disque dur de l'ordinateur)

  • nomenclature
  • modèle d'hébergement
  • modèle local
  • Bibliothèque Python
  • Articles de blog
  • vidéo
  • Carnets Jupyter
  • le palmarès (des best-sellers)

 

nomenclature

Il existe un certain nombre de noms différents pour générer du JSON, bien que les significations soient fondamentalement les mêmes :

  • Sortie structuréeLes résultats structurés : utiliser LLM pour générer n'importe quel résultat structuré, y compris JSON, XML ou YAML, indépendamment de la technologie spécifique (par exemple, les appels de fonction, la génération d'amorçage).
  • appel de fonctionLe LLM n'appelle pas réellement la fonction, mais indique seulement l'intention de l'appel par le biais d'un message JSON.
  • Mode JSONSelon le fournisseur, un schéma peut ou non être spécifié et LLM peut créer des schémas inattendus.
  • Utilisation des outilsOutils : fournit au LLM une sélection d'outils tels que la génération d'images, la recherche sur le web et les "appels de fonction". Les arguments des appels de fonction dans les demandes d'API sont désormais appelés "outils".
  • amorçagePour faire en sorte que le LLM suive une spécification spécifique pour la génération de texte, telle que grammaire indépendante du contexte.
  • Fonctionnement du GPTChatGPT est basé sur les données spécifiées. Spécification OpenAPI Les points d'extrémité et les paramètres du serveur d'API sont utilisés pour invoquer des opérations (c'est-à-dire des appels d'API). Contrairement à la fonctionnalité appelée "appels de fonction", cette fonctionnalité appelle des fonctions hébergées sur le serveur API.

Chacun des termes ci-dessus peut avoir une signification différente, c'est pourquoi j'ai nommé cette liste "Selected LLM JSON".

 

modèle d'hébergement

fournisseur (entreprise)modélisationlien (sur un site web)
Anthropiqueclaude-3-opus-20240229claude-3-sonnet-20240229claude-3-haiku-20240307Documentation de l'APIfixer un prix
Toute échelleMixtral-7B-Instruct-v0.1Mixtral-8x7B-Instruct-v0.1appel de fonctionMode JSONfixer un prixAnnonces (2023)
L'azurgpt-4gpt-4-turbogpt-35-turbomistral-large-latestmistral-large-2402appel de fonctionPrix de l'OpenAIPrix du Mistral
CohèreCommande-RC-commande-R+appel de fonctionfixer un prixCommand-R (2024-03-11)Commande-R+ (2024-04-04)
Feux d'artifice.aifonction-incendie-v1appel de fonctionMode JSONmodèle grammaticalfixer un prixAnnonce (2023-12-20)
Google Société Internetgemini-1.0-proappel de fonctionfixer un prix
Groqllama2-70bmixtral-8x7bgemma-7b-itappel de fonctionfixer un prix
TGI de l'étreintePlusieurs modèles open sourceGrammaire, modèles JSON, appels de fonctions et outilslocalementUtilisation gratuiteou parcatégoriquepeut-êtresans serveur Les points d'extrémité fournissent des services.
Mistralmistral-large-latestappel de fonctionfixer un prix
OpenAIgpt-4gpt-4-turbogpt-35-turboappel de fonctionMode JSONfixer un prixAnnonce (2023-06-13)
Rysanainversion-smDocumentation de l'APIfixer un prixAnnonce (2024-03-18)
Ensemble AIMixtral-8x7B-Instruct-v0.1Mistral-7B-Instruct-v0.1CodeLlama-34b-Instructappel de fonctionMode JSONfixer un prixAnnonce 2024-01-31

appel de fonction parallèle

Vous trouverez ci-dessous une liste de modèles d'API hébergés qui prennent en charge plusieurs appels de fonctions parallèles. Ces appels peuvent consister à vérifier le temps qu'il fait dans plusieurs villes, ou à trouver d'abord un hôtel, puis à vérifier le temps qu'il fait à cet endroit.

  • anthropique
    • claude-3-opus-20240229
    • claude-3-sonnet-20240229
    • claude-3-haiku-20240307
  • azure/openai
    • gpt-4-turbo-preview
    • gpt-4-1106-preview
    • gpt-4-0125-preview
    • gpt-3.5-turbo-1106
    • gpt-3.5-turbo-0125
  • cohérer
    • commande-r
  • ensemble_ai
    • Mixtral-8x7B-Instruct-v0.1
    • Mistral-7B-Instruct-v0.1
    • CodeLlama-34b-Instruct

 

modèle local

Mistral 7B Instruct v0.3 (2024-05-22, Apache 2.0) est une version améliorée des commandes de Mistral qui ajoute le support des appels de fonction.

Commande C4AI R+ (2024-03-20, CC-BY-NC, Cohere) est un modèle multilingue de 104B paramètres avec une fonctionnalité avancée de Génération Augmentée de Récupération (RAG) et d'utilisation d'outils optimisée pour le raisonnement, le résumé et la réponse aux questions dans 10 langues. La quantification est prise en charge pour améliorer l'efficacité de l'utilisation et l'intégration unique d'outils en plusieurs étapes dans l'exécution de tâches complexes est démontrée.

Hermes 2 Pro - Mistral 7B (2024-03-13, Nous Research) est un modèle paramétrique 7B spécialisé dans les appels de fonction, les sorties structurées JSON et les tâches génériques. Entraîné sur la base de l'ensemble de données OpenHermes 2.5 mis à jour et du nouvel ensemble de données d'appels de fonction, à l'aide d'indices spéciaux du système et d'une structure à plusieurs tours. Précision de 91% et 84% dans l'évaluation des appels de fonction et du modèle JSON, respectivement.

Gorilla OpenFunctions v2 (2024-02-27, Licence Apache 2.0. Charlie Cheng-Jie Ji et al.) Interprétation et exécution de fonctions basées sur des objets de schéma JSON, prise en charge de plusieurs langues et capacité à détecter la pertinence fonctionnelle.

NexusRaven-V2 (2023-12-05, Nexusflow) est un modèle 13B qui surpasse GPT-4 jusqu'à 7% sur les appels de fonction à échantillonnage nul, ce qui permet une utilisation efficace des outils logiciels. Ajustement supplémentaire des instructions basé sur CodeLlama-13B-instruct.

Fonctionnaire (2023-08-04, MeetKai) Basé sur l'interprétation des objets du schéma JSON et l'exécution des fonctions pour prendre en charge une variété de besoins de calcul et de types d'appels. Compatible avec OpenAI-python et llama-cpp-python pour une exécution efficace des appels de fonction dans les tâches de génération JSON.

TGI de l'étreinte en raison dePlusieurs modèles locauxLa sortie JSON et la prise en charge des appels de fonction sont activées.

 

Bibliothèque Python

DSPy (MIT) est un cadre permettant d'optimiser algorithmiquement les indices et les poids des modèles de langage (LM).Prédicteurs de type et signaturesPour ce faire, il convient d'utiliser la fonction Pydantique Amélioration des champs basés sur des chaînes de caractères en imposant des contraintes de type sur les entrées et les sorties.

FuzzTypes (MIT) étend Pydantic pour fournir une auto-correction des types d'annotation afin d'améliorer la normalisation des données et de gérer des types complexes tels que les courriels, les dates et les entités personnalisées.

orientation (Apache-2.0) prend en charge la génération de contraintes, combine la logique Python avec des appels au modèle du grand langage (LLM), et prend en charge la réutilisation de fonctions et l'appel à des outils externes afin d'optimiser les indices pour une génération plus rapide.

Instructeur (MIT) simplifie la génération de données structurées pour les LLM en utilisant des appels de fonctions, des appels d'outils et des modèles d'échantillonnage contraints. La validation est basée sur Pydantic et prend en charge plusieurs LLM.

LangChain (MIT) fournit des ports de liaison, une intégration avec d'autres outils et des chaînes pour les applications.Chaîne de résultats structuréset les modèles croisésappel de fonctionSoutien.

LiteLLM (MIT) Simplifie l'appel de plus de 100 LLM au format OpenAI, prend en chargeappel de fonctionVoici quelques exemples du mode JSON de l'appel d'outil et du mode JSON.

LlamaIndex (MIT) fournit différents niveaux d'abstraction pour le système de gestion de l'information.Module de sortie structuréL'analyseur de sortie comprend un analyseur de sortie pour les points d'arrivée de la saisie de texte, un analyseur de sortie pour la mise en correspondance des indices avec les sorties structurées, un analyseur de sortie pour les points d'arrivée de la saisie de texte. Programme PydantiqueLe programme Pydantique est un programme prédéfini pour un type de sortie spécifique.

Marvin. (Apache-2.0) est une boîte à outils légère pour construire des interfaces fiables en langage naturel avec des outils d'auto-documentation tels que l'extraction d'entités et la prise en charge multimodale.

Aperçu (Apache-2.0) Génère du texte structuré à l'aide d'une variété de modèles, de modèles Jinja et de la prise en charge de modèles d'expressions régulières, de modèles JSON, de modèles pydantiques et de grammaires indépendantes du contexte.

Pydantique (MIT) simplifie l'utilisation des structures de données et de JSON en définissant des modèles de données, la validation, la génération de schémas JSON, ainsi que l'analyse et la sérialisation transparentes.

SGLang (MPL-2.0) permet de spécifier des motifs JSON à l'aide d'expressions régulières ou de modèles pydantiques pour un décodage contraint. Son moteur d'exécution haute performance accélère le décodage JSON.

SynCode (MIT) est un cadre de travail pour la génération de grands modèles linguistiques (LLM) guidée par la grammaire. Il prend en charge les grammaires indépendantes du contexte (CFG) pour Python, Go, Java, JSON, YAML, etc.

Mirascope (MIT) est une boîte à outils LLM qui prend en charge l'extraction structurée et fournit une API Python intuitive.

Magnétique (MIT) Appelez LLM en Python en trois lignes de code. Créez simplement des fonctions LLM qui renvoient une sortie structurée à l'aide du décorateur @prompt, développé par Pydantic.

Formatron (MIT) est une bibliothèque de décodage de contraintes efficace et extensible qui prend en charge l'utilisation de modèles de chaînes de caractères f pour contrôler les formats de sortie des modèles de langage, les expressions régulières, les grammaires indépendantes du contexte, les schémas JSON et les modèles pydantiques.

Transformateurs-cfg (MIT) étend la prise en charge de la grammaire sans contexte (CFG) aux transformateurs Hugging Face via l'interface EBNF, qui met en œuvre la génération sous contrainte syntaxique avec des modifications minimales du code des transformateurs et la prise en charge des modèles et des modes JSON.

 

Articles de blog

À quelle vitesse les structures syntaxiques sont-elles générées ? (2024-04-12, .txt Engineering) démontre une méthode à coût quasi nul pour générer du texte grammaticalement correct. Sur la syntaxe C, elle est plus performante que llama.cpp Jusqu'à 50 fois.

Génération structurée pour l'amélioration de la performance LLM : Benchmarks GSM8K (2024-03-15, .txt Engineering) Démontre l'amélioration de la cohérence sur 8 modèles, en mettant l'accent sur les avantages de la "cohérence des indices" et du "contrôle de la pensée".

LoRAX + Outlines : Meilleure extraction JSON avec la génération structurée et LoRA (2024-03-03, Predibase Blog) sera Aperçu Combinez avec LoRAX v0.8 pour améliorer la précision de l'extraction et l'intégrité du modèle grâce à la génération structurée, au réglage fin et aux adaptateurs LoRA.

FU, un rapide coup d'œil sur les conseils d'encadrement du LLM, difficiles à comprendre. (2023-02-14, Hamel Husain) Fournit un guide pratique pour intercepter les appels API en utilisant mitmproxy afin de comprendre la fonctionnalité de l'outil et d'évaluer sa nécessité. L'accent est mis sur la réduction de la complexité et l'intégration étroite avec le LLM sous-jacent.

Coalescence : raisonnement LLM 5 fois plus rapide (2024-02-02, .txt Engineering) a démontré l'utilisation de techniques d'"agrégation" pour accélérer la génération structurée, qui est plus rapide que la génération non structurée, mais qui peut affecter la qualité de la génération.

Pourquoi Pydantic est indispensable pour les LLM (2024-01-19, Adam Azzam) a expliqué l'émergence de Pydantic en tant qu'outil clé permettant le partage de modèles de données via un schéma JSON et permettant l'inférence entre des données structurées et non structurées. L'importance de la quantification de l'espace de décision a été soulignée, ainsi que le problème potentiel du surajustement du LLM sur les anciennes versions du schéma.

Premiers pas avec les appels de fonction (2024-01-11, Elvis Saravia) Introduit des appels de fonction pour connecter les LLM à des outils et API externes, fourni des exemples d'utilisation de l'API OpenAI, et mis en évidence des applications potentielles.

Pousser les limites du support de données structurées de ChatGPT (2023-12-21, Max Woolf) explore l'utilisation d'API payantes, de schémas JSON et de Pydantic pour tirer le meilleur parti de la technologie ChatGPT Méthodes de fonctionnement. Les techniques permettant d'améliorer la qualité des résultats et les avantages de la prise en charge des données structurées sont présentés.

Pourquoi choisir Instructor ? (2023-11-18, Jason Liu) Explique les points forts de la bibliothèque, en proposant une approche facile à lire, une prise en charge de l'extraction partielle et de divers types, ainsi qu'un mécanisme d'autocorrection. Recommandé. Instructeur Autres ressources sur le site.

Utilisation de la syntaxe pour contraindre la sortie de llama.cpp (2023-09-06, Ian Maurer) Combinaison d'une syntaxe indépendante du contexte pour améliorer la précision de sortie de llama.cpp, en particulier pour les données biomédicales.

Extraction de données à l'aide des fonctions de l'OpenAI et de sa bibliothèque Python (2023-07-09, Simon Willison) Démontre l'extraction de données structurées en un seul appel API via la bibliothèque OpenAI Python et les appels de fonction, avec des exemples de code et des suggestions pour traiter les contraintes de flux.

 

vidéo

(2024-04-09, Simon Willison) montre comment le plugin datasette-extract peut extraire des données à partir de textes et d'images non structurés et alimenter des tables de base de données via l'API de GPT-4 Turbo.

(2024-03-25, Andrej Baranovskij) a fait la démonstration de l'extraction de données basée sur les appels de fonction à l'aide d'Ollama, Instructor et Agent des moineaux .

(2024-03-18, Prompt Engineer) a présenté Hermes 2 Pro, un modèle avec 7 milliards de paramètres qui excelle dans les appels de fonction et la génération de sorties JSON structurées. Il a démontré une précision de 90% pour les appels de fonction et de 84% en mode JSON, surpassant ainsi les autres modèles.

(2024-02-24, Sophia Yang) a fait la démonstration de la connexion de grands modèles de langage à des outils externes, de la génération d'arguments de fonction et de l'exécution de fonctions. Cette méthode peut être étendue pour générer ou manipuler des données JSON.

(2024-02-13.Matt Williams) précise que la sortie structurée générée par le modèle est utilisée pour l'analyse et l'appel des fonctions. Les implémentations sont comparées, en mettant l'accent sur Ollama est plus concise et utilise un petit nombre d'exemples de conseils pour maintenir la cohérence.

(2024-02-12.Jason Liu(math.) genreProgramme "Poids et Biais) fournit un cours concis sur la façon d'utiliser Pydantic pour gérer la sortie JSON structurée, les appels de fonction et la validation, couvrant l'essentiel de la construction de pipelines robustes et d'intégrations de production efficaces.

(2023-10-10.Jason Liu(math.) genreConférence des ingénieurs en IA) discute de l'importance de Pydantic dans le repérage structuré et la validation des résultats, présente la bibliothèque Instructor et démontre des applications avancées pour des applications LLM fiables et maintenables.

 

Carnets Jupyter

Appels de fonctions en utilisant llama-cpp-python et le client OpenAI Python Démontre l'intégration, y compris la configuration à l'aide de la bibliothèque Instructor, et fournit des exemples d'obtention d'informations météorologiques et d'extraction de détails sur l'utilisateur.

Appels de fonction selon le modèle Mistral Montre la connexion d'un modèle Mistral à un outil externe à travers un exemple simple impliquant une base de données de transactions de paiement.

chatgpt-données structurées laisser (à qqn) Max Woolf qui démontre les appels de fonction de ChatGPT et la prise en charge des données structurées, couvrant une variété de cas d'utilisation et de structures de données.

le palmarès (des best-sellers)

Tableau de bord des appels de fonction de Berkeley (BFCL) est un cadre d'évaluation permettant de tester les capacités d'appel de fonctions des LLM. Il se compose de plus de 2000 paires question-fonction-réponse dans des langages tels que Python, Java, JavaScript, SQL et REST API, et se concentre sur les appels de fonctions simples, multiples et parallèles, ainsi que sur la détection de la pertinence des fonctions.

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...