Maison >développement back-end >Tutoriel Python >DSPy : une nouvelle approche de la programmation de modèles de langage

DSPy : une nouvelle approche de la programmation de modèles de langage

DDD
DDDoriginal
2024-11-30 18:33:111060parcourir

DSPy: A New Approach to Language Model Programming

Le défi : aller au-delà des invitations traditionnelles

Lorsqu'ils travaillent avec des modèles de langage (LLM), les développeurs sont confrontés à un ensemble de défis communs. Nous passons d'innombrables heures à créer des invites parfaites, pour constater que nos solutions soigneusement conçues se cassent lorsque nous changeons de modèle ou lorsque l'entrée change légèrement. L'approche traditionnelle de l'ingénierie rapide est manuelle, prend du temps et est souvent imprévisible.

La solution : le framework DSPy de Stanford

DSpy (Declarative Self-improving Python) apparaît comme la réponse de Stanford NLP à ces défis. Comme décrit sur leur site Web (dspy.ai), il s'agit de « le cadre open source pour programmer - plutôt que d'inviter - des modèles de langage ». Il permet une itération rapide sur la création de systèmes d'IA modulaires et fournit des algorithmes pour optimiser les invites et les pondérations, que vous créiez des classificateurs simples, des pipelines RAG sophistiqués ou des boucles d'agents.

Comment ça marche : les composants de base

1. Pour commencer

Tout d'abord, installez le framework :

pip install -U dspy

import dspy
lm = dspy.LM('openai/gpt-4-mini', api_key='YOUR_OPENAI_API_KEY')
dspy.configure(lm=lm)

2. Comprendre les signatures

Les signatures sont le fondement de l'approche déclarative de DSPy. Ils définissent les rôles sémantiques des entrées et des sorties dans un format simple :

# Simple question answering
"question -> answer"

# Retrieval-based QA
"context: list[str], question: str -> answer: str"

# Multiple-choice with reasoning
"question, choices: list[str] -> reasoning: str, selection: int"

3. Travailler avec des modules

DSpy fournit plusieurs modules clés pour différents cas d'utilisation :

  • Prédire : réponses directes en LLM
  • ChainOfThought : Raisonnement étape par étape
  • ProgramOfThought : Solutions basées sur le code
  • ReAct : interactions basées sur des agents
  • MultiChainComparison : Comparez plusieurs chemins de raisonnement

4. Applications du monde réel

Résolution de problèmes mathématiques

math = dspy.ChainOfThought("question -> answer: float")
math(question="Two dice are tossed. What is the probability that the sum equals two?")

Génération augmentée par récupération (RAG)

def search_wikipedia(query: str) -> list[str]:
    results = dspy.ColBERTv2(url='http://20.102.90.50:2017/wiki17_abstracts')(query, k=3)
    return [x['text'] for x in results]

rag = dspy.ChainOfThought('context, question -> response')

Au-delà des bases

DSpy prend en charge divers cas d'utilisation avancés :

  • Tâches de classification
  • Extraction d'informations
  • Systèmes basés sur des agents avec outils
  • Pipelines RAG complexes

La nature auto-améliorable du framework signifie que vos applications peuvent optimiser leurs performances au fil du temps, en apprenant des interactions et des résultats.

Prêt à commencer ?

Vous pouvez trouver des exemples complets et explorer d'autres cas d'utilisation dans la documentation DSPy et le référentiel communautaire sur https://github.com/gabrielvanderlei/DSPy-examples.

DSpy représente un changement de paradigme de l'ingénierie d'invite traditionnelle à la programmation déclarative avec des modèles de langage. Il apporte structure, fiabilité et prévisibilité au développement LLM, facilitant ainsi la création et la maintenance d'applications basées sur l'IA.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn