Come utilizzare le entità Google e GPT-4 per creare le strutture degli articoli
Pubblicato: 2023-06-06In questo articolo imparerai come utilizzare un po' di scraping e il Knowledge Graph di Google per creare un prompt engineering automatizzato che generi uno schema e un riepilogo per un articolo che, se ben scritto, conterrà molti ingredienti chiave per un buon posizionamento.
Alla radice delle cose, stiamo dicendo a GPT-4 di produrre una struttura dell'articolo basata su una parola chiave e le principali entità che hanno trovato su una pagina ben posizionata a tua scelta.
Le entità sono ordinate in base al loro punteggio di salienza.
"Perché il punteggio di salienza?" potresti chiedere.
Google descrive la salienza nei loro documenti API come:
“Il punteggio di salienza per un'entità fornisce informazioni sull'importanza o centralità di tale entità rispetto all'intero testo del documento. I punteggi più vicini a 0 sono meno salienti, mentre i punteggi più vicini a 1,0 sono molto salienti.
Sembra una metrica abbastanza buona da usare per influenzare quali entità dovrebbero esistere in un pezzo di contenuto che potresti voler scrivere, vero?
Iniziare
Ci sono due modi per farlo:
- Trascorri circa 5 minuti (forse 10 se hai bisogno di configurare il tuo computer) ed esegui gli script dalla tua macchina, oppure...
- Vai al Colab che ho creato e inizia subito a giocare.
Sono parziale al primo, ma sono anche passato a uno o due Colab ai miei tempi. 😀
Supponendo che tu sia ancora qui e desideri configurare questa configurazione sulla tua macchina ma non hai ancora installato Python o un IDE (Integrated Development Environment), ti indirizzerò prima a una rapida lettura sull'impostazione della tua macchina per l'uso Taccuino di Giove. Non dovrebbe richiedere più di circa 5 minuti.
Ora è il momento di andare avanti!
Utilizzo delle entità Google e GPT-4 per creare le strutture degli articoli
Per rendere questo facile da seguire, formatterò le istruzioni come segue:
- Passo : Una breve descrizione del passo in cui ci troviamo.
- Code : il codice per completare quel passaggio.
- Spiegazione : una breve spiegazione di cosa sta facendo il codice.
Passaggio 1: dimmi cosa vuoi
Prima di immergerci nella creazione dei contorni, dobbiamo definire ciò che vogliamo.
query = input ("What do you want to rank for :") print(query) url = input("What URL should I be inspired by : ") print(url)
Quando viene eseguito, questo blocco chiederà all'utente (probabilmente a te) di inserire la query per cui desideri che l'articolo si classifichi/riguardi, oltre a darti un posto dove inserire l'URL di un articolo che desideri pezzo a cui ispirarsi.
Suggerirei un articolo che si posiziona bene, è in un formato che funzionerà per il tuo sito e che ritieni meritevole delle classifiche solo per il valore dell'articolo e non solo per la forza del sito.
Quando viene eseguito, sarà simile a:

Passaggio 2: installazione delle librerie richieste
Successivamente, dobbiamo installare tutte le librerie che useremo per realizzare la magia.
!pip install google-cloud-language beautifulsoup4 openai !pip install wandb --upgrade !pip install --force-reinstall -Iv protobuf==3.20.00 import requests import json from bs4 import BeautifulSoup from google.cloud import language_v1 from google.oauth2 import service_account import os import openai import pandas as pd import wandb
Stiamo installando le seguenti librerie:
- Richieste : questa libreria consente di effettuare richieste HTTP per recuperare contenuti da siti Web o API Web.
- JSON : fornisce funzioni per lavorare con i dati JSON, inclusa l'analisi di stringhe JSON in oggetti Python e la serializzazione di oggetti Python in stringhe JSON.
- BeautifulSoup : questa libreria viene utilizzata per scopi di web scraping. Aiuta nell'analisi e nella navigazione di documenti HTML o XML e nell'estrazione di informazioni rilevanti da essi.
- Google.cloud.language_v1 : è una libreria di Google Cloud che fornisce funzionalità di elaborazione del linguaggio naturale. Consente l'esecuzione di varie attività come l'analisi del sentimento, il riconoscimento dell'entità e l'analisi della sintassi sui dati di testo.
- Google.oauth2.service_account : questa libreria fa parte del pacchetto Google OAuth2 Python. Fornisce supporto per l'autenticazione con le API di Google utilizzando un account di servizio, che è un modo per concedere un accesso limitato alle risorse di un progetto Google Cloud.
- Sistema operativo : questa libreria fornisce un modo per interagire con il sistema operativo. Consente di accedere a varie funzionalità come operazioni sui file, variabili di ambiente e gestione dei processi.
- OpenAI : questa libreria è il pacchetto OpenAI Python. Fornisce un'interfaccia per interagire con i modelli linguistici di OpenAI, incluso GPT-4 (e 3). Consente agli sviluppatori di generare testo, eseguire completamenti di testo e altro ancora.
- Pandas : è una potente libreria per la manipolazione e l'analisi dei dati. Fornisce strutture dati e funzioni per gestire e analizzare in modo efficiente dati strutturati, come tabelle o file CSV.
- WandB : questa libreria sta per "Weights & Biases" ed è uno strumento per il monitoraggio e la visualizzazione degli esperimenti. Aiuta a registrare e visualizzare le metriche, gli iperparametri e altri aspetti importanti degli esperimenti di machine learning.
Quando viene eseguito, assomiglia a questo:

Ottieni la newsletter quotidiana su cui si affidano i marketer di ricerca.
Vedi termini.
Passaggio 3: autenticazione
Dovrò distrarci per un momento per andarmene e mettere in atto la nostra autenticazione. Avremo bisogno di una chiave API OpenAI e delle credenziali di Google Knowledge Graph Search.
Ci vorranno solo pochi minuti.
Ottenere la tua API OpenAI
Al momento, probabilmente dovrai iscriverti alla lista d'attesa. Sono fortunato ad avere accesso all'API in anticipo, quindi sto scrivendo questo per aiutarti a configurare non appena lo ottieni.
Le immagini di registrazione provengono da GPT-3 e verranno aggiornate per GPT-4 una volta che il flusso sarà disponibile per tutti.
Prima di poter utilizzare GPT-4, avrai bisogno di una chiave API per accedervi.
Per ottenerne uno, vai semplicemente alla pagina del prodotto di OpenAI e fai clic su Inizia .

Scegli il tuo metodo di registrazione (io ho scelto Google) ed esegui il processo di verifica. Avrai bisogno di accedere a un telefono in grado di ricevere messaggi per questo passaggio.
Al termine, creerai una chiave API. In questo modo OpenAI può connettere i tuoi script al tuo account.
Devono sapere chi sta facendo cosa e determinare se e quanto dovrebbero farti pagare per quello che stai facendo.
Prezzi OpenAI
Al momento della registrazione, ricevi un credito di $ 5 che ti porterà sorprendentemente lontano se stai solo sperimentando.
Al momento della stesura di questo documento, il prezzo passato è:

Creazione della tua chiave OpenAI
Per creare la tua chiave, fai clic sul tuo profilo in alto a destra e scegli Visualizza chiavi API .

... e poi creerai la tua chiave.

Una volta chiusa la lightbox, non puoi visualizzare la tua chiave e dovrai ricrearla, quindi per questo progetto, copiala semplicemente in un documento di Blocco note da usare a breve.
Nota: non salvare la chiave (un documento di Blocco note sul desktop non è altamente sicuro). Dopo averlo usato momentaneamente, chiudi il documento Blocco note senza salvarlo.
Ottenere la tua autenticazione Google Cloud
Innanzitutto, dovrai accedere al tuo account Google. (Sei su un sito SEO, quindi presumo che tu ne abbia uno. 🙂)
Dopo averlo fatto, puoi rivedere le informazioni sull'API Knowledge Graph se ti senti così incline o passare direttamente alla console API e andare avanti.
Una volta che sei alla console:

Chiamalo qualcosa come "I fantastici articoli di Dave". Sai... facile da ricordare.
Successivamente, abiliterai l'API facendo clic su Abilita API e servizi .


Trova l'API Knowledge Graph Search e abilitala.

Verrai quindi riportato alla pagina principale dell'API, dove puoi creare le credenziali:

E creeremo un account di servizio.

Basta creare un account di servizio:

Compila le informazioni richieste:

(Dovrai dargli un nome e concedergli i privilegi di proprietario.)
Ora abbiamo il nostro account di servizio. Non resta che creare la nostra chiave.
Fai clic sui tre punti sotto Azioni e fai clic su Gestisci chiavi .

Fare clic su Aggiungi chiave , quindi su Crea nuova chiave :

Il tipo di chiave sarà JSON.
Immediatamente, lo vedrai scaricare nella posizione di download predefinita.
Questa chiave darà accesso alle tue API, quindi tienila al sicuro, proprio come la tua API OpenAI.
Bene... e siamo tornati. Pronto a continuare con la nostra sceneggiatura?
Ora che li abbiamo, dobbiamo definire la nostra chiave API e il percorso del file scaricato. Il codice per farlo è:
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/PATH-TO-FILE/FILENAME.JSON' %env OPENAI_API_KEY=YOUR_OPENAI_API_KEY openai.api_key = os.environ.get("OPENAI_API_KEY")
Sostituirai YOUR_OPENAI_API_KEY
con la tua chiave.
Sostituirai anche /PATH-TO-FILE/FILENAME.JSON
con il percorso della chiave dell'account di servizio appena scaricata, incluso il nome del file.
Esegui la cella e sei pronto per andare avanti.
Passaggio 4: creare le funzioni
Successivamente, creeremo le funzioni per:
- Raschiare la pagina web che abbiamo inserito sopra.
- Analizza il contenuto ed estrai le entità.
- Genera un articolo utilizzando GPT-4.
#The function to scrape the web page def scrape_url(url): response = requests.get(url) soup = BeautifulSoup(response.content, "html.parser") paragraphs = soup.find_all("p") text = " ".join([p.get_text() for p in paragraphs]) return text
#The function to pull and analyze the entities on the page using Google's Knowledge Graph API def analyze_content(content): client = language_v1.LanguageServiceClient() response = client.analyze_entities( request={"document": language_v1.Document(content=content, type_=language_v1.Document.Type.PLAIN_TEXT), "encoding_type": language_v1.EncodingType.UTF8} ) top_entities = sorted(response.entities, key=lambda x: x.salience, reverse=True)[:10] for entity in top_entities: print(entity.name) return top_entities
#The function to generate the content def generate_article(content): openai.api_key = os.environ["OPENAI_API_KEY"] response = openai.ChatCompletion.create( messages = [{"role": "system", "content": "You are a highly skilled writer, and you want to produce articles that will appeal to users and rank well."}, {"role": "user", "content": content}], model="gpt-4", max_tokens=1500, #The maximum with GPT-3 is 4096 including the prompt n=1, #How many results to produce per prompt #best_of=1 #When n>1 completions can be run server-side and the "best" used stop=None, temperature=0.8 #A number between 0 and 2, where higher numbers add randomness ) return response.choices[0].message.content.strip()
Questo è praticamente esattamente ciò che descrivono i commenti. Stiamo creando tre funzioni per gli scopi descritti sopra.
Gli occhi attenti noteranno:
messages = [{"role": "system", "content": "You are a highly skilled writer, and you want to produce articles that will appeal to users and rank well."},
Puoi modificare il contenuto ( You are a highly skilled writer, and you want to produce articles that will appeal to users and rank well.
) e descrivi il ruolo che vuoi che ChatGPT assuma. Puoi anche aggiungere un tono (ad esempio, "Sei uno scrittore amichevole …").
Passaggio 5: raschiare l'URL e stampare le entità
Ora ci stiamo sporcando le mani. È tempo di:
- Raschiare l'URL che abbiamo inserito sopra.
- Estrarre tutto il contenuto che vive all'interno dei tag di paragrafo.
- Eseguilo tramite l'API di Google Knowledge Graph.
- Emetti le entità per una rapida anteprima.
Fondamentalmente, vuoi vedere qualsiasi cosa in questa fase. Se non vedi nulla, controlla un altro sito.
content = scrape_url(url) entities = analyze_content(content)
Puoi vedere che la riga uno chiama la funzione che raschia l'URL che abbiamo inserito per la prima volta. La seconda riga analizza il contenuto per estrarre le entità e le metriche chiave.
Parte della funzione Analyze_content stampa anche un elenco delle entità trovate per una rapida consultazione e verifica.
Passaggio 6: analizzare le entità
Quando ho iniziato a giocare con la sceneggiatura, ho iniziato con 20 entità e ho scoperto rapidamente che di solito sono troppe. Ma l'impostazione predefinita (10) è corretta?
Per scoprirlo, scriveremo i dati su W&B Tables per una facile valutazione. Conserverà i dati a tempo indeterminato per una valutazione futura.
Innanzitutto, dovrai impiegare circa 30 secondi per registrarti. (Non preoccuparti, è gratuito per questo tipo di cose!) Puoi farlo su https://wandb.ai/site.
Dopo averlo fatto, il codice per farlo è:
run = wandb.init(project="Article Summary With Entities") columns=["Name", "Salience"] ent_table = wandb.Table(columns=columns) for entity in entities: ent_table.add_data(entity.name, entity.salience) run.log({"Entity Table": ent_table}) wandb.finish()
Quando viene eseguito, l'output è simile al seguente:

E quando fai clic sul link per visualizzare la tua corsa, troverai:

Puoi vedere un calo del punteggio di salienza. Ricorda che questo punteggio calcola l'importanza di quel termine per la pagina, non per la query.
Durante la revisione di questi dati, puoi scegliere di regolare il numero di entità in base alla salienza o solo quando vengono visualizzati termini non pertinenti.
Per regolare il numero di entità, vai alla cella delle funzioni e modifica:

Dovrai quindi eseguire nuovamente la cella e quella che hai eseguito per raschiare e analizzare il contenuto per utilizzare il nuovo conteggio delle entità.
Passaggio 7: genera lo schema dell'articolo
Nel momento che tutti stavate aspettando, è il momento di generare lo schema dell'articolo.
Questo viene fatto in due parti. Innanzitutto, dobbiamo generare il prompt aggiungendo la cella:
entity_names = [entity.name for entity in entities] gpt_prompt = f"Create an outline for an article about {query} that includes the following entities: {', '.join(entity_names)}." print(gpt_prompt)
Questo crea essenzialmente una richiesta per generare un articolo:

E poi, non resta che generare lo schema dell'articolo usando quanto segue:
generated_article = generate_article(gpt_prompt) print(generated_article)
Che produrrà qualcosa come:

E se desideri anche scrivere un riepilogo, puoi aggiungere:
gpt_prompt2 = f"Write an article summary about {query} for an article with an outline of: {generated_article}." generated_article = generate_article(gpt_prompt2) print(generated_article)
Che produrrà qualcosa come:

Le opinioni espresse in questo articolo sono quelle dell'autore ospite e non necessariamente Search Engine Land. Gli autori dello staff sono elencati qui.
