Espandi le tue GPT con C#

Espandi le tue capacità di programmazione con C#

Un paio di settimane fa, OpenAI ha rilasciato GPTs. Un GPT è essenzialmente un chatbot personalizzato ChatGPT ospitato da OpenAI. La sua caratteristica più importante è la capacità di estendere i tuoi GPT con un’API. Magic ha come caratteristica più importante la capacità di creare facilmente un’API.

Magic e GPTs, quindi, sono una combinazione perfetta, permettendoti di creare il tuo GPT personalizzato, come già illustrato in un articolo pubblicato qualche giorno fa che dimostra come creare un GPT Low-Code CRUD in pochi secondi.

CRUD, naturalmente, è fantastico e importante quando si tratta del tuo database. Tuttavia, di tanto in tanto, hai bisogno di una funzionalità personalizzata, che ti permette di estendere il tuo GPT con un codice completamente unico, creato completamente da zero utilizzando C#. Questo articolo illustra come realizzare questo.

Il Codice

Prima di tutto, hai bisogno di un po’ di codice in C#. Crea una nuova cartella chiamata "cs-demo" all’interno della tua cartella "modules", e crea un file chiamato "slot.cs". Metti il seguente codice nel tuo file.

Quando hai finito, il tuo Hyper IDE dovrebbe assomigliare a quanto segue, escludendo il file "get-employee-details.get.hl", al quale torneremo più avanti in questo articolo.

Spiegazione del Codice C#

Il codice sopra dichiara uno slot chiamato [get-employee-details]. Prende un singolo parametro che è un nome e restituisce dati per Tage, Thomas o Aria, a seconda del valore del tuo argomento. Una volta compilato, il codice sopra può essere richiamato da Hyperlambda utilizzando quanto segue nel tuo Hyperlambda Playground.

Una delle caratteristiche cruciali di Hyperlambda è la capacità di passare e restituire oggetti grafici dai tuoi slot. Il codice C# sopra assume che il chiamante abbia passato un nome come valore dell’invocazione, che è l’unico parametro del tuo codice C#, per poi restituire tre nuovi nodi come figli della tua invocazione. Dopo aver eseguito il codice sopra nella tua Hyperlambda Playground, otterrai il seguente risultato.

Nota che l’invocazione GetEx<string>() nel nostro codice C# ci permette di valutare espressioni lambda nel nostro codice.

Creazione del nostro Endpoint API

Abbiamo bisogno di compilare il codice prima di poterlo utilizzare, e incapsularlo in un endpoint HTTP. Una delle caratteristiche di Magic è la possibilità di utilizzare quasi C# come un linguaggio di scripting, il che implica che possiamo compilare il codice al volo ed eseguirlo quasi nello stesso modo in cui normalmente utilizziamo un linguaggio di scripting come JavaScript o Python.

Questa funzionalità ci consente di semplicemente incapsulare il processo di compilazione all’interno del nostro endpoint Hyperlambda, compilare il codice al volo, eseguirlo e restituire il risultato della nostra esecuzione. Crea un nuovo file chiamato get-employee-details.get.hl all’interno della tua cartella cs-demo e inserisci il seguente contenuto nel tuo file.

Nel video qui sotto, stiamo applicando una qualche forma di caching intelligente per evitare di ricompilare il codice ad ogni singola richiesta verso il nostro endpoint, ma per mantenere il codice facilmente comprensibile ho rimosso queste parti dal codice sopra. Tuttavia, con il codice sopra siamo ora fondamentalmente finiti, e possiamo già connettere il nostro GPT con il nostro endpoint API. Utilizza il componente Manager/Endpoints in Magic per eseguire il tuo endpoint, come mostrato di seguito.

Assicurati di filtrare per employee per trovare l’endpoint e quindi aggiungi thomas come parametro nome.

Spiegazione del Codice Hyperlambda

Il codice Hyperlambda sopra carica il tuo file C#, quindi compila il codice, producendo un byte[] grezzo che cariciamo dinamicamente come assembly, iniettando l’assembly nel nostro AppDomain. Ciò implica che puoi modificare il tuo codice C# senza avviare manualmente alcuna ricompilazione, e il nuovo codice verrà compilato dinamicamente al volo e rifletterà immediatamente le tue modifiche.

Ancora una volta, con Magic e Hyperlambda, puoi trattare C# quasi come se fosse un linguaggio di scripting.

In un’applicazione del mondo reale, vorrai evitare di ricompilare il codice C# ad ogni singola invocazione poiché è un processo costoso. Ti guiderò attraverso alcuni trucchi correlati a questo nel video più avanti nella pagina, ma per mantenere il codice chiaro ed facilmente comprensibile, ho evitato questo nell’esempio sopra.

Collega il tuo endpoint a un GPT

A questo punto, tutto ciò che dobbiamo fare è collegare il nostro endpoint API a un GPT personalizzato. Crea un nuovo GPT e assicurati di filtrare i tuoi endpoint su openapi nel componente degli endpoint di Magic. Ciò dovrebbe fornirti un endpoint simile al seguente.

Una volta completato quanto sopra, puoi copiare il JSON risultante o copiare l’URL del tuo endpoint con il pulsante di copia nel componente degli endpoint. A questo punto, tutto ciò che dobbiamo fare è fornire questa specifica OpenAPI ad OpenAI come un Action per il nostro GPT, e siamo pronti.

Testare il tuo GPT

A questo punto, sei fondamentalmente pronto e puoi già iniziare a testare il tuo GPT. Puoi fargli domande come:

  • Qual è il numero di telefono di Tage?
  • Thomas è un dipendente. Cerca le sue informazioni usando la mia azione get employee.
  • Qual è l’indirizzo email di Aria?
  • Ecc…

Di seguito è riportato un esempio di consumo del nostro GPT.

Come puoi vedere sopra, il nostro GPT sta passando correttamente “Tage” al nostro endpoint API, che restituisce nuovamente l’indirizzo email di Tage e utilizza l’indirizzo email nelle sue conversazioni con te. A questo punto, puoi creare, ad esempio, un endpoint Send email in cui ChatGPT ti aiuta a comporre e inviare un’email a Tage, ma questa è un’attività per un altro giorno. Per ora, puoi divertirti con il GPT personalizzato che ho creato qui sotto.

Osserva il mio percorso attraverso l’intero processo nel video seguente.