Esta lista com curadoria concentra-se em recursos relacionados à geração de JSON ou outra saída estruturada usando o LLM (Large Language Model).
Uma lista de recursos para gerar JSON usando o LLM por meio de chamadas de função, ferramentas, CFGs etc., abrangendo bibliotecas, modelos, notebooks e muito mais.
diretório (no disco rígido do computador)
- nomenclatura
- modelo de hospedagem
- modelo local
- Biblioteca Python
- Publicações do blog
- vídeo
- Notebooks Jupyter
- as paradas (de best-sellers)
nomenclatura
Há vários nomes diferentes para gerar JSON, embora os significados sejam basicamente os mesmos:
- Saída estruturadaUse o LLM para gerar qualquer saída estruturada, incluindo JSON, XML ou YAML, independentemente da tecnologia específica (por exemplo, chamadas de função, geração de bootstrap).
- chamada de funçãoFunção JSON: Forneça ao LLM uma definição de função hipotética (ou real), solicitando que ele "chame" a função em uma resposta de bate-papo ou de conclusão; o LLM não chama a função de fato, apenas indica a intenção da chamada por meio de uma mensagem JSON.
- Modo JSONEspecifique que o LLM deve gerar JSON válido. Dependendo do fornecedor, um esquema pode ou não ser especificado e o LLM pode criar esquemas inesperados.
- Uso de ferramentasAPI: fornece ao LLM uma seleção de ferramentas, como geração de imagens, pesquisa na Web e "chamadas de função". Os argumentos de chamadas de função em solicitações de API agora são chamados de "ferramentas".
- preparaçãoPara fazer com que o LLM siga uma especificação específica para gerar texto, como gramática independente de contexto.
- Operação da GPTChatGPT: O ChatGPT se baseia no Especificação OpenAPI para invocar uma operação (ou seja, uma chamada de API) com os pontos de extremidade e parâmetros no servidor de API. Ao contrário do recurso chamado "chamadas de função", esse recurso chama funções hospedadas no servidor de API.
Cada um dos termos acima pode ter um significado diferente, por isso chamei esta lista de "Selected LLM JSON".
modelo de hospedagem
chamada de função paralela
Abaixo está uma lista de modelos de API hospedados que suportam várias chamadas de função paralelas. Essas chamadas podem incluir a verificação do clima em várias cidades ou a localização de um hotel primeiro e, em seguida, a verificação do clima nesse local.
- antrópico
- 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
- coexistir
- comando-r
- juntos_ai
- Mixtral-8x7B-Instruct-v0.1
- Mistral-7B-Instruct-v0.1
- CodeLlama-34b-Instruct
modelo local
Mistral 7B Instruct v0.3 (2024-05-22, Apache 2.0) é uma versão aperfeiçoada dos comandos do Mistral que adiciona suporte a chamadas de função.
Comando C4AI R+ (2024-03-20, CC-BY-NC, Cohere) é um modelo multilíngue de 104B parâmetros com Retrieval Augmented Generation (RAG) avançado e funcionalidade de uso de ferramentas otimizada para raciocínio, resumo e resposta a perguntas em 10 idiomas. A quantificação é suportada para melhorar a eficiência do uso e a integração exclusiva de ferramentas em várias etapas na execução de tarefas complexas é demonstrada.
Hermes 2 Pro - Mistral 7B (2024-03-13, Nous Research) é um modelo paramétrico 7B especializado em chamadas de função, saída estruturada JSON e tarefas genéricas. Treinado com base no conjunto de dados OpenHermes 2.5 atualizado e no novo conjunto de dados de chamada de função, usando dicas especiais do sistema e estrutura de várias rodadas. Obteve precisão de 91% e 84% na avaliação de chamadas de função e do modelo JSON, respectivamente.
Gorilla OpenFunctions v2 (2024-02-27, Licença Apache 2.0. Charlie Cheng-Jie Ji et al.) Interpretação e execução de funções com base em objetos de esquema JSON, suporte a vários idiomas e capacidade de detectar relevância funcional.
NexusRaven-V2 (2023-12-05, Nexusflow) é um modelo 13B que supera o GPT-4 em até 7% em chamadas de função de amostra zero, permitindo o uso eficiente de ferramentas de software. Ajuste fino adicional de instruções com base no CodeLlama-13B-instruct.
Funcional (2023-08-04, Conheça o Kai) Com base na interpretação de objetos do esquema JSON e na execução de funções para dar suporte a uma variedade de necessidades computacionais e tipos de chamadas. Compatível com OpenAI-python e llama-cpp-python para execução eficiente de chamadas de função em tarefas de geração de JSON.
Cara de abraço TGI por causa deVários modelos locaisA saída JSON e o suporte à chamada de função estão ativados.
Biblioteca Python
DSPy (MIT) é uma estrutura para otimizar algoritmicamente as dicas e os pesos do modelo de linguagem (LM).Preditores de tipo e assinaturasIsso é feito usando o Pydantic Aprimorou os campos baseados em strings, impondo restrições de tipo em entradas e saídas.
FuzzTypes (MIT) estende o Pydantic para fornecer correção automática de tipos de anotação para aprimorar a padronização de dados e lidar com tipos complexos, como e-mails, datas e entidades personalizadas.
orientação (Apache-2.0) oferece suporte à geração de restrições, combina a lógica do Python com chamadas do Large Language Model (LLM) e oferece suporte à reutilização de funções e à chamada de ferramentas externas para otimizar as dicas para uma geração mais rápida.
Instrutor (MIT) simplifica a geração de dados estruturados para LLMs usando chamadas de função, chamadas de ferramenta e padrões de amostragem restritos. A validação é baseada no Pydantic e suporta vários LLMs.
LangChain (MIT) fornece portas de link, integração com outras ferramentas e cadeias para aplicativos.Cadeia de resultados estruturadose modelo cruzadochamada de funçãoSuporte.
LiteLLM (MIT) Simplifica a chamada de mais de 100 LLMs no formato OpenAI, suportachamada de funçãoA seguir, alguns exemplos do modo JSON da chamada de ferramenta e do modo JSON.
LlamaIndex (MIT) oferece diferentes níveis de abstração para oMódulo de saída estruturada,包括文本补全端点的输出解析器、用于将提示映射到结构化输出的 Programa PydanticO programa Pydantic é um programa predefinido para um tipo específico de saída.
Marvin. (Apache-2.0) é um kit de ferramentas leve para criar interfaces de linguagem natural confiáveis com ferramentas de autodocumentação, como extração de entidades e suporte multimodal.
Esboços (Apache-2.0) Gera texto estruturado usando uma variedade de modelos, modelos Jinja e suporte para padrões de expressão regular, padrões JSON, modelos Pydantic e gramáticas independentes de contexto.
Pydantic (MIT) simplifica o uso de estruturas de dados e JSON, definindo modelos de dados, validação, geração de esquemas JSON e análise e serialização contínuas.
SGLang (MPL-2.0) permite que os padrões JSON sejam especificados usando expressões regulares ou modelos Pydantic para decodificação restrita. Seu tempo de execução de alto desempenho acelera a decodificação de JSON.
SynCode (MIT) é uma estrutura para geração guiada por gramática de modelos de linguagem grandes (LLMs). Ele oferece suporte a gramáticas independentes de contexto (CFGs) para Python, Go, Java, JSON, YAML e muito mais.
Mirascópio (MIT) é um kit de ferramentas LLM que suporta extração estruturada e fornece uma API Python intuitiva.
Magnético (MIT) Chame o LLM em Python em três linhas de código. Basta criar funções LLM que retornem uma saída estruturada usando o decorador @prompt, desenvolvido pela Pydantic.
Formatron O Formatron (MIT) é uma biblioteca eficiente e extensível de decodificação de restrições que suporta o uso de modelos de f-string para controlar formatos de saída de modelos de linguagem, expressões regulares, gramáticas independentes de contexto, esquemas JSON e modelos Pydantic.
Transformers-cfg (MIT) amplia o suporte à gramática livre de contexto (CFG) para os transformadores Hugging Face por meio da interface EBNF, que implementa a geração com restrição de sintaxe com alterações mínimas no código dos transformadores e suporte para modos JSON e padrões JSON.
Publicações do blog
Com que rapidez as estruturas sintáticas são geradas? (2024-04-12, .txt Engineering) demonstra um método de custo quase zero para gerar texto gramaticalmente correto. Na sintaxe C, o desempenho é melhor do que llama.cpp
Até 50 vezes.
Geração estruturada para melhorar o desempenho do LLM: Benchmarks do GSM8K (2024-03-15, .txt Engineering) Demonstra o aprimoramento da consistência em 8 modelos, enfatizando os benefícios da "consistência de dicas" e do "controle do pensamento".
LoRAX + Outlines: melhor extração de JSON com geração estruturada e LoRA (2024-03-03, Predibase Blog) será Esboços Combine com o LoRAX v0.8 para melhorar a precisão da extração e a integridade do padrão por meio de geração estruturada, ajuste fino e adaptadores LoRA.
FU, uma rápida olhada nas dicas de estrutura do LLM difíceis de entender. (2023-02-14, Hamel Husain) Fornece um guia prático para interceptar chamadas de API usando o mitmproxy a fim de compreender a funcionalidade da ferramenta e avaliar sua necessidade. A ênfase é colocada na redução da complexidade e na forte integração com o LLM subjacente.
Coalescência: raciocínio LLM 5x mais rápido (2024-02-02, .txt Engineering) demonstrou o uso de técnicas de "agregação" para acelerar a geração estruturada, que é mais rápida do que a geração não estruturada, mas pode afetar a qualidade da geração.
Por que o Pydantic é indispensável para LLMs (2024-01-19, Adam Azzam) explicou o surgimento do Pydantic como uma ferramenta fundamental que permite o compartilhamento de modelos de dados via esquema JSON e possibilita a inferência entre dados estruturados e não estruturados. A importância de quantificar o espaço de decisão foi enfatizada, bem como o possível problema de sobreajuste do LLM em versões mais antigas do esquema.
Primeiros passos com chamadas de função (2024-01-11, Elvis Saravia) Apresentou chamadas de função para conectar LLMs a ferramentas e APIs externas, forneceu exemplos de uso da API OpenAI e destacou possíveis aplicativos.
Levando o suporte a dados estruturados do ChatGPT aos limites (2023-12-21, Max Woolf) explora o uso de APIs pagas, esquemas JSON e Pydantic para aproveitar ao máximo o ChatGPT Métodos de funcionalidade. São apresentadas técnicas para melhorar a qualidade da saída e os benefícios do suporte a dados estruturados.
Por que escolher o Instructor? (2023-11-18, Jason Liu) explica as vantagens da biblioteca, fornecendo uma abordagem de fácil leitura, suporte para extração parcial e vários tipos, além de um mecanismo de autocorreção. Recomenda outros recursos no site do instrutor.
Uso da sintaxe para restringir a saída do llama.cpp (2023-09-06, Ian Maurer) Combinação de sintaxe independente de contexto para aumentar a precisão da saída do llama.cpp, especialmente para dados biomédicos.
Extração de dados usando as funções do OpenAI e sua biblioteca Python (2023-07-09, Simon Willison) Demonstra a extração de dados estruturados em uma única chamada de API por meio da biblioteca OpenAI Python e de chamadas de função, com exemplos de código e sugestões para lidar com restrições de fluxo.
vídeo
(2024-04-09, Simon Willison) mostra como o plug-in datasette-extract pode extrair dados de texto e imagens não estruturados e preencher tabelas de banco de dados, usando a API do GPT-4 Turbo.
(2024-03-25, Andrej Baranovskij) demonstrou a extração de dados baseada em chamadas de função usando Ollama, Instructor e Agente Sparrow .
(2024-03-18, Prompt Engineer) apresentou o Hermes 2 Pro, um modelo com 7 bilhões de parâmetros que se destaca em chamadas de função e geração de saída JSON estruturada. Demonstrou uma precisão de 90% para chamadas de função e 84% no modo JSON, superando outros modelos.
(2024-02-24, Sophia Yang) demonstrou a conexão de grandes modelos de linguagem a ferramentas externas, gerando argumentos de função e executando funções. Isso pode ser ampliado para gerar ou manipular dados JSON.
(2024-02-13.Matt Williams) esclarece que a saída estruturada gerada pelo modelo é usada para analisar e chamar funções. As implementações são comparadas, enfatizando Ollama é mais concisa e usa um pequeno número de dicas de amostra para manter a consistência.
(2024-02-12.Jason Liu(matemática) gêneroPrograma Pesos e Vieses) oferece um curso conciso sobre como usar o Pydantic para lidar com saída JSON estruturada, chamadas de função e validação, abrangendo os fundamentos da criação de pipelines robustos e integrações de produção eficientes.
(2023-10-10.Jason Liu(matemática) gêneroConferência de engenheiros de IA) discute a importância do Pydantic na validação estruturada de dicas e resultados, apresenta a biblioteca Instructor e demonstra aplicativos avançados para aplicativos LLM confiáveis e de fácil manutenção.
Notebooks Jupyter
Chamadas de função usando llama-cpp-python e o cliente Python da OpenAI Demonstra a integração, incluindo a configuração usando a biblioteca do Instructor, e fornece exemplos de obtenção de informações meteorológicas e extração de detalhes do usuário.
Chamadas de função usando o modelo Mistral Mostra a conexão de um modelo Mistral a uma ferramenta externa por meio de um exemplo simples que envolve um quadro de dados de transação de pagamento.
dados estruturados do chatgpt deixar (para alguém) Max Woolf demonstrando as chamadas de função e o suporte a dados estruturados do ChatGPT, abrangendo uma variedade de casos de uso e estruturas de dados.
as paradas (de best-sellers)
Tabela de classificação de chamadas de função de Berkeley (BFCL) é uma estrutura de avaliação para testar os recursos de chamada de funções dos LLMs, que consiste em mais de 2.000 pares de pergunta-função-resposta em linguagens como Python, Java, JavaScript, SQL e APIs REST, com foco em chamadas de funções simples, múltiplas e paralelas, bem como na detecção de relevância de funções.