Griptape est un cadre Python modulaire pour la création d'applications alimentées par AI qui se connectent en toute sécurité à vos données et API d'entreprise. Il offre aux développeurs la possibilité de maintenir le contrôle et la flexibilité à chaque étape.
Les tâches sont les principaux éléments constitutifs des structures, permettant une interaction avec les moteurs, les outils et autres composants GripTape.
Les outils fournissent des capacités aux LLM pour interagir avec les données et les services. Griptape comprend une variété d'outils intégrés et facilite la création d'outils personnalisés.
Les conducteurs facilitent les interactions avec les ressources et les services externes:
Les moteurs enveloppent les pilotes et fournissent des fonctionnalités spécifiques à un cas:
Veuillez vous référer à Griptape Docs pour:
Veuillez consulter Griptape Trade School pour des cours en ligne gratuits.
Tout d'abord, installez GripTapape :
pip install "griptape[all]" -U
Deuxièmement, configurez un client OpenAI en obtenant une clé API et en l'ajoutant à votre environnement sous le nom OPENAI_API_KEY . Par défaut, Griptape utilise l'API Openai Chat Completion pour exécuter les invites LLM.
Avec Griptape, vous pouvez créer des structures, telles que des agents, des pipelines et des flux de travail, composés de différents types de tâches. Créons un agent créatif simple qui utilise dynamiquement trois outils et déplace les données dans la mémoire des tâches.
from griptape . structures import Agent
from griptape . tools import WebScraperTool , FileManagerTool , PromptSummaryTool
agent = Agent (
input = "Load {{ args[0] }}, summarize it, and store it in a file called {{ args[1] }}." ,
tools = [
WebScraperTool ( off_prompt = True ),
PromptSummaryTool ( off_prompt = True ),
FileManagerTool ()
]
)
agent . run ( "https://griptape.ai" , "griptape.txt" )Et voici la sortie:
[08/12/24 14:48:15] INFO ToolkitTask c90d263ec69046e8b30323c131ae4ba0
Input: Load https://griptape.ai, summarize it, and store it in a file called griptape.txt.
[08/12/24 14:48:16] INFO Subtask ebe23832cbe2464fb9ecde9fcee7c30f
Actions: [
{
"tag": "call_62kBnkswnk9Y6GH6kn1GIKk6",
"name": "WebScraperTool",
"path": "get_content",
"input": {
"values": {
"url": "https://griptape.ai"
}
}
}
]
[08/12/24 14:48:17] INFO Subtask ebe23832cbe2464fb9ecde9fcee7c30f
Response: Output of "WebScraperTool.get_content" was stored in memory with memory_name "TaskMemory" and artifact_namespace
"cecca28eb0c74bcd8c7119ed7f790c95"
[08/12/24 14:48:18] INFO Subtask dca04901436d49d2ade86cd6b4e1038a
Actions: [
{
"tag": "call_o9F1taIxHty0mDlWLcAjTAAu",
"name": "PromptSummaryTool",
"path": "summarize",
"input": {
"values": {
"summary": {
"memory_name": "TaskMemory",
"artifact_namespace": "cecca28eb0c74bcd8c7119ed7f790c95"
}
}
}
}
]
[08/12/24 14:48:21] INFO Subtask dca04901436d49d2ade86cd6b4e1038a
Response: Output of "PromptSummaryTool.summarize" was stored in memory with memory_name "TaskMemory" and artifact_namespace
"73765e32b8404e32927822250dc2ae8b"
[08/12/24 14:48:22] INFO Subtask c233853450fb4fd6a3e9c04c52b33bf6
Actions: [
{
"tag": "call_eKvIUIw45aRYKDBpT1gGKc9b",
"name": "FileManagerTool",
"path": "save_memory_artifacts_to_disk",
"input": {
"values": {
"dir_name": ".",
"file_name": "griptape.txt",
"memory_name": "TaskMemory",
"artifact_namespace": "73765e32b8404e32927822250dc2ae8b"
}
}
}
]
INFO Subtask c233853450fb4fd6a3e9c04c52b33bf6
Response: Successfully saved memory artifacts to disk
[08/12/24 14:48:23] INFO ToolkitTask c90d263ec69046e8b30323c131ae4ba0
Output: The content from https://griptape.ai has been summarized and stored in a file called `griptape.txt`.
Pendant la course, l'agent GripTape a chargé une page Web avec un outil, stocké son contenu complet dans la mémoire des tâches, l'a interrogé pour répondre à la question d'origine et a finalement enregistré la réponse à un fichier.
La chose importante à noter ici est que quelle que soit la taille de la page Web, elle ne peut jamais exploser la limite de jeton rapide car le contenu complet de la page ne revient jamais au LLM. De plus, aucune donnée des sous-tâches suivantes n'a été retournée non plus à l'invite. Alors, comment ça marche?
Dans l'exemple ci-dessus, nous avons mis OFF_PROPPT sur True , ce qui signifie que le LLM ne peut jamais voir les données qu'il manipule, mais peut l'envoyer à d'autres outils.
Important
Cet exemple utilise la boîte à outils de GripTape, qui nécessite un LLM hautement capable pour fonctionner correctement. Par défaut, Griptape utilise l'OpenAichatPromptDriver; Pour un autre puissant LLM, essayez d'échanger sur l'anthropicpromptdriver! Si vous utilisez un LLM moins puissant, envisagez d'utiliser la Tool Task à la place, car le ToolkitTask peut ne pas fonctionner correctement ou du tout.
Consultez nos documents pour en savoir plus sur la façon d'utiliser GripTape avec d'autres fournisseurs de LLM comme Anthropic, Claude, Embring Face et Azure.
Griptape est en développement constant et ses API et la documentation sont susceptibles de changer. Jusqu'à stabiliser l'API et publier la version 1.0.0, nous utiliserons des versions mineures (c'est-à-dire XYZ) pour introduire des fonctionnalités et des fonctionnalités de rupture et des versions de correctif (c'est-à-dire XYZ) pour les corrections de bogues.
Merci d'avoir envisagé de contribuer à Griptape! Avant de commencer, veuillez lire les directives suivantes.
Si vous avez identifié un bogue, souhaitez proposer une nouvelle fonctionnalité ou si vous avez une question, veuillez soumettre un problème via notre suivi des problèmes publics. Avant de soumettre un nouveau problème, veuillez vérifier les problèmes existants pour vous assurer qu'il n'a pas été signalé ou discuté auparavant.
Nous accueillons et encourageons les demandes de traction. Pour rationaliser le processus, veuillez suivre ces directives:
Problèmes existants: veuillez soumettre des demandes de traction uniquement pour les problèmes existants. Si vous souhaitez travailler sur de nouvelles fonctionnalités ou corriger un bogue qui n'a pas encore été résolu, veuillez d'abord soumettre un problème. Cela permet à l'équipe GripTape de traiter en interne la demande et de fournir une réponse du public.
Branche: Soumettez toutes les demandes de traction à la branche dev . Cela nous aide à gérer les changements et à les intégrer en douceur.
Tests unitaires: assurez-vous que votre demande de traction passe tous les tests unitaires existants. De plus, si vous introduisez un nouveau code, veuillez inclure de nouveaux tests unitaires pour valider sa fonctionnalité.
Exécutez make test/unit pour exécuter la suite de test localement.
Exécutez make docs pour construire la documentation localement.
Exécutez make check pour exécuter toutes les vérifications de code localement.
L'extensibilité de Griptape permet à quiconque de développer et de distribuer des fonctionnalités indépendamment. Toutes les nouvelles intégrations, y compris les outils, les pilotes, les tâches, etc., doivent initialement être développées sous forme d'extensions et peuvent ensuite être amorties dans Griptape Core si elles sont discutées et approuvées.
Le modèle d'extension Griptape fournit la structure recommandée, les instructions étape par étape, l'automatisation de base et les exemples d'utilisation pour les nouvelles intégrations.
Installez toutes les dépendances via la marque:
make installOu installer en appelant la poésie directement:
poetry install --all-extras --with dev --with test --with docsConfigurez le pré-engagement pour vous assurer que votre code est correctement formaté et passe toutes les vérifications:
poetry run pre-commit installGriptape est disponible sous la licence Apache 2.0.