Bonjour, ce projet consiste à créer une interface utile dans le modèle de langage GPT de Clojure.
C'est un travail en cours, mais il dispose d'un gestionnaire de conversations en mémoire fonctionnel (mémoire conversationnelle) et d'un gestionnaire de tâches WIP rudimentaire (agents).
Ce n'est qu'un début, mais j'ai l'intention de l'utiliser dans mon travail et également d'apprendre les bases de l'interaction avec des modèles de langage.
Si vous êtes intéressé, souhaitez aider ou avez besoin d'aide, vous pouvez me trouver sur la chaîne #multi-gpt sur le slack Clojurians.
Voici comment démarrer avec le gestionnaire de conversations, que vous pouvez également trouver dans les exemples sous basic_conversation.clj
( require '[multi-gpt.repl-interface :refer :all ]
'[clojure.pprint :refer [pprint]])
; ;
; ; Run below if you want to use portal to see the output
; ;
( require '[portal.api :as p])
( def p ( p/open { :launcher :vs-code }))
( add-tap #'p/submit)
; ;
; ; Setup the system (includes a conversation manager)
; ;
( def system ( setup-system " api-key "
" org-id "
" gpt-3.5-turbo " ))
; ;
; ; Create a conversation
; ;
( def conversation ( create-conversation system))
; ;
; ; Create a convenience function for chatting as the user role ;;
; ;
( def chat ( fn [message]
( update-conversation system conversation [{ :role " user " :content message}])))
; ;
; ; Add a watch to print to the REPL (I also use portal and tap>)
; ;
( add-watch ( -> system :conversation-manager :db )
:on-update
( fn [_ _ _ new-state]
; ;
; ; If you want to view output with portal uncomment this
; ;
#_( tap> ( with-meta ( update ( get new-state ( :id conversation))
:messages
reverse)
{ :portal.viewer/default :portal.viewer/tree }))
; ;
; ; Comment out below if using portal
; ;
( pprint
( get new-state ( :id conversation)))))
; ;
; ; Initialize your conversation with a system prompt
; ; This is also a reasonable place to add example messages if needed
; ;
( update-conversation
system
conversation
[{ :role " system " :content " You will help me develop the next breakthrough in distributed systems. " }])
; ;
; ; Engage in conversation
; ;
( chat " Please provide the most cutting edge research topics about these systems. " )
Copyright 2023 Cameron Barre
L'autorisation est par la présente accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.