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

Nov 30, 2024 pm 06:33 PM

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)
Copier après la connexion

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"
Copier après la connexion

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?")
Copier après la connexion

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')
Copier après la connexion

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 de ce site Web
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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser la belle soupe pour analyser HTML? Comment utiliser la belle soupe pour analyser HTML? Mar 10, 2025 pm 06:54 PM

Comment utiliser la belle soupe pour analyser HTML?

Comment télécharger des fichiers dans Python Comment télécharger des fichiers dans Python Mar 01, 2025 am 10:03 AM

Comment télécharger des fichiers dans Python

Filtrage d'image en python Filtrage d'image en python Mar 03, 2025 am 09:44 AM

Filtrage d'image en python

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte Mar 05, 2025 am 09:58 AM

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte

Comment travailler avec des documents PDF à l'aide de Python Comment travailler avec des documents PDF à l'aide de Python Mar 02, 2025 am 09:54 AM

Comment travailler avec des documents PDF à l'aide de Python

Comment se cacher en utilisant Redis dans les applications Django Comment se cacher en utilisant Redis dans les applications Django Mar 02, 2025 am 10:10 AM

Comment se cacher en utilisant Redis dans les applications Django

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch? Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch? Mar 10, 2025 pm 06:52 PM

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch?

Présentation de la boîte à outils en langage naturel (NLTK) Présentation de la boîte à outils en langage naturel (NLTK) Mar 01, 2025 am 10:05 AM

Présentation de la boîte à outils en langage naturel (NLTK)

See all articles