Desenvolvimento de resumo de texto: um tutorial Python com GPT-3.5

Desenvolvimento de resumo de texto: um tutorial Python com GPT-3.5

Nó Fonte: 2571007

Desenvolvimento de resumo de texto: um tutorial Python com GPT-3.5
Imagem por frimufilmes on Freepik
 

Esta é uma era em que o avanço da IA ​​está chegando diariamente. Não tínhamos muitos AI gerados em público há alguns anos, mas agora a tecnologia é acessível a todos. É excelente para muitos criadores individuais ou empresas que desejam aproveitar significativamente a tecnologia para desenvolver algo complexo, o que pode levar muito tempo.

Um dos avanços mais incríveis que mudam a forma como trabalhamos é o lançamento do Modelo GPT-3.5 da OpenAI. Qual é o modelo GPT-3.5? Se eu deixar o modelo falar por si. Nesse caso, a resposta é “um modelo de IA altamente avançado no campo do processamento de linguagem natural, com grandes melhorias na geração de texto contextualmente preciso e relevantet ”.

O OpenAI fornece uma API para o modelo GPT-3.5 que podemos usar para desenvolver um aplicativo simples, como um resumor de texto. Para fazer isso, podemos usar o Python para integrar a API do modelo em nosso aplicativo pretendido sem problemas. Como é o processo? Vamos entrar nisso.

Existem alguns pré-requisitos antes de seguir este tutorial, incluindo:

– Conhecimento de Python, incluindo conhecimento do uso de bibliotecas externas e IDE

– Compreensão de APIs e manipulação do endpoint com Python

– Ter acesso às APIs OpenAI

Para obter acesso às APIs OpenAI, devemos nos registrar no Plataforma de desenvolvedor OpenAI e visite as chaves de API do View em seu perfil. Na web, clique no botão “Criar nova chave secreta” para adquirir acesso à API (veja a imagem abaixo). Lembre-se de salvar as chaves, pois elas não serão mostradas depois disso.
 

Desenvolvimento de resumo de texto: um tutorial Python com GPT-3.5
Imagem do autor
 

Com toda a preparação pronta, vamos tentar entender o básico do modelo de APIs OpenAI.

A Modelo da família GPT-3.5 foi especificado para muitas tarefas de linguagem e cada modelo da família se destaca em algumas tarefas. Para este exemplo de tutorial, usaríamos o gpt-3.5-turbo pois era o modelo atual recomendado quando este artigo foi escrito por sua capacidade e custo-benefício.

Muitas vezes usamos o text-davinci-003 no tutorial OpenAI, mas usaríamos o modelo atual para este tutorial. Nós confiaríamos no Conclusão do bate-papo ponto de extremidade em vez de conclusão porque o modelo recomendado atual é um modelo de bate-papo. Mesmo que o nome seja um modelo de bate-papo, ele funciona para qualquer tarefa de idioma.

Vamos tentar entender como funciona a API. Primeiro, precisamos instalar os pacotes OpenAI atuais. 

pip install openai

 

Depois de concluir a instalação do pacote, tentaremos usar a API conectando-nos por meio do terminal ChatCompletion. No entanto, precisamos definir o ambiente antes de continuar.

No seu IDE favorito (para mim, é VS Code), crie dois arquivos chamados .env e summarizer_app.py, semelhante à imagem abaixo.

 

Desenvolvimento de resumo de texto: um tutorial Python com GPT-3.5
Imagem do autor
 

A summarizer_app.py é onde construiríamos nosso aplicativo de resumo simples, e o .env arquivo é onde armazenaríamos nossa chave de API. Por motivos de segurança, é sempre recomendável separar nossa chave de API em outro arquivo, em vez de codificá-la no arquivo Python.

No .env arquivo coloque a seguinte sintaxe e salve o arquivo. Substitua your_api_key_here pela sua chave de API real. Não altere a chave de API para um objeto de string; deixe-os como estão. 

OPENAI_API_KEY=your_api_key_here

 

Para entender melhor a API GPT-3.5; usaríamos o seguinte código para gerar a palavra sumário.

openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages=[ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ],
)

 

O código acima é como interagimos com o modelo GPT-3.5 das APIs OpenAI. Usando a API ChatCompletion, criamos uma conversa e obteremos o resultado pretendido após passar o prompt.

Vamos detalhar cada parte para entendê-los melhor. Na primeira linha, usamos o openai.ChatCompletion.create código para criar a resposta do prompt que passaríamos para a API.

Na próxima linha, temos nossos hiperparâmetros que usamos para melhorar nossas tarefas de texto. Aqui está o resumo de cada função de hiperparâmetro:

  • model: a família de modelos que queremos usar. Neste tutorial, usamos o modelo recomendado atual (gpt-3.5-turbo).
  • max_tokens: O limite superior das palavras geradas pelo modelo. Isso ajuda a limitar o comprimento do texto gerado.
  • temperature: A aleatoriedade da saída do modelo, com uma temperatura mais alta, significa um resultado mais diverso e criativo. A faixa de valores está entre 0 e infinito, embora valores acima de 2 não sejam comuns. 
  • top_p: A amostragem Top P ou top-k ou amostragem de núcleo é um parâmetro para controlar o pool de amostragem da distribuição de saída. Por exemplo, o valor 0.1 significa que o modelo amostra apenas a saída dos 10% superiores da distribuição. A faixa de valores estava entre 0 e 1; valores mais altos significam um resultado mais diversificado.
  • frequency_penalty: a penalidade para o token de repetição da saída. O intervalo de valores entre -2 a 2, em que valores positivos impediriam o modelo de repetir o token, enquanto valores negativos encorajam o modelo a usar palavras mais repetitivas. 0 significa nenhuma penalidade.
  • messages: O parâmetro onde passamos nosso prompt de texto para ser processado com o modelo. Passamos uma lista de dicionários onde a chave é o objeto de papel (ou “sistema”, “usuário” ou “assistente”) que ajuda o modelo a entender o contexto e a estrutura enquanto os valores são o contexto.
    •  A função “sistema” é o conjunto de diretrizes para o comportamento do modelo “assistente”,
    •  O papel “usuário” representa o prompt da pessoa que interage com o modelo,
    •  A função “assistente” é a resposta ao prompt “usuário”

Tendo explicado o parâmetro acima, podemos ver que o messages parâmetro acima tem dois objetos de dicionário. O primeiro dicionário é como definimos o modelo como um sumarizador de texto. A segunda é onde passaríamos nosso texto e obteríamos a saída do resumo. 

No segundo dicionário, você também verá a variável person_type e prompt. O person_type é uma variável que usei para controlar o estilo resumido, que mostrarei no tutorial. Enquanto o prompt é onde passaríamos nosso texto para ser resumido.

Continuando com o tutorial, coloque o código abaixo no summarizer_app.py arquivo e tentaremos ver como funciona a função abaixo.

import openai
import os
from dotenv import load_dotenv load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY") def generate_summarizer( max_tokens, temperature, top_p, frequency_penalty, prompt, person_type,
): res = openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages= [ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ], ) return res["choices"][0]["message"]["content"]

 

O código acima é onde criamos uma função Python que aceitaria vários parâmetros que discutimos anteriormente e retornaria a saída de resumo de texto. 

Tente a função acima com seu parâmetro e veja a saída. Então vamos continuar o tutorial para criar um aplicativo simples com o pacote streamlit.

Iluminado é um pacote Python de código aberto projetado para criar aplicativos da Web de aprendizado de máquina e ciência de dados. É fácil de usar e intuitivo, por isso é recomendado para muitos iniciantes. 

Vamos instalar o pacote streamlit antes de continuar com o tutorial.

pip install streamlit

 

Após a conclusão da instalação, coloque o seguinte código no summarizer_app.py.

import streamlit as st #Set the application title
st.title("GPT-3.5 Text Summarizer") #Provide the input area for text to be summarized
input_text = st.text_area("Enter the text you want to summarize:", height=200) #Initiate three columns for section to be side-by-side
col1, col2, col3 = st.columns(3) #Slider to control the model hyperparameter
with col1: token = st.slider("Token", min_value=0.0, max_value=200.0, value=50.0, step=1.0) temp = st.slider("Temperature", min_value=0.0, max_value=1.0, value=0.0, step=0.01) top_p = st.slider("Nucleus Sampling", min_value=0.0, max_value=1.0, value=0.5, step=0.01) f_pen = st.slider("Frequency Penalty", min_value=-1.0, max_value=1.0, value=0.0, step=0.01) #Selection box to select the summarization style
with col2: option = st.selectbox( "How do you like to be explained?", ( "Second-Grader", "Professional Data Scientist", "Housewives", "Retired", "University Student", ), ) #Showing the current parameter used for the model with col3: with st.expander("Current Parameter"): st.write("Current Token :", token) st.write("Current Temperature :", temp) st.write("Current Nucleus Sampling :", top_p) st.write("Current Frequency Penalty :", f_pen) #Creating button for execute the text summarization
if st.button("Summarize"): st.write(generate_summarizer(token, temp, top_p, f_pen, input_text, option))

 

Tente executar o código a seguir em seu prompt de comando para iniciar o aplicativo.

streamlit run summarizer_app.py

 

Se tudo funcionar bem, você verá o seguinte aplicativo em seu navegador padrão.

 

Desenvolvimento de resumo de texto: um tutorial Python com GPT-3.5
Imagem do autor
 

Então, o que aconteceu no código acima? Deixe-me explicar brevemente cada função que usamos:

  • .st.title: Forneça o texto do título do aplicativo da web.
  • .st.write: Grava o argumento no aplicativo; pode ser qualquer coisa, mas principalmente um texto de string.
  • .st.text_area: Forneça uma área para entrada de texto que pode ser armazenada na variável e usada para o prompt do nosso resumo de texto
  • .st.columns: Contêineres de objetos para fornecer interação lado a lado.
  • .st.slider: forneça um widget de controle deslizante com valores definidos com os quais o usuário pode interagir. O valor é armazenado em uma variável usada como parâmetro do modelo.
  • .st.selectbox: Forneça um widget de seleção para os usuários selecionarem o estilo de resumo que desejam. No exemplo acima, usamos cinco estilos diferentes.
  • .st.expander: forneça um contêiner que os usuários possam expandir e armazenar vários objetos.
  • .st.button: Forneça um botão que executa a função pretendida quando o usuário o pressiona.

Como o streamlit projetaria automaticamente a interface do usuário seguindo o código fornecido de cima para baixo, poderíamos nos concentrar mais na interação.  

Com todas as peças no lugar, vamos tentar nosso aplicativo de resumo com um exemplo de texto. Para o nosso exemplo, eu usaria o Página da Wikipédia da Teoria da Relatividade texto a ser resumido. Com um parâmetro padrão e estilo de segundo grau, obtemos o seguinte resultado.

Albert Einstein was a very smart scientist who came up with two important ideas about how the world works. The first one, called special relativity, talks about how things move when there is no gravity. The second one, called general relativity, explains how gravity works and how it affects things in space like stars and planets. These ideas helped us understand many things in science, like how particles interact with each other and even helped us discover black holes! 

 

Você pode obter um resultado diferente do acima. Vamos tentar o estilo Housewives e ajustar um pouco o parâmetro (Token 100, Temperature 0.5, Nucleus Sampling 0.5, Frequency Penalty 0.3).

The theory of relativity is a set of physics theories proposed by Albert Einstein in 1905 and 1915. It includes special relativity, which applies to physical phenomena without gravity, and general relativity, which explains the law of gravitation and its relation to the forces of nature. The theory transformed theoretical physics and astronomy in the 20th century, introducing concepts like 4-dimensional spacetime and predicting astronomical phenomena like black holes and gravitational waves.

 

Como podemos ver, há uma diferença de estilo para o mesmo texto que fornecemos. Com um prompt de alteração e parâmetro, nosso aplicativo pode ser mais funcional. 

A aparência geral do nosso aplicativo de resumo de texto pode ser vista na imagem abaixo.

 

Desenvolvimento de resumo de texto: um tutorial Python com GPT-3.5
Imagem do autor
 

Esse é o tutorial sobre como criar o desenvolvimento do aplicativo de resumo de texto com GPT-3.5. Você pode ajustar o aplicativo ainda mais e implantar o aplicativo.

A IA generativa está crescendo e devemos aproveitar a oportunidade criando um aplicativo fantástico. Neste tutorial, aprenderemos como as APIs GPT-3.5 OpenAI funcionam e como usá-las para criar um aplicativo de resumo de texto com a ajuda do Python e do pacote streamlit.
 
 
Cornélio Yudha Wijaya é gerente assistente de ciência de dados e redator de dados. Enquanto trabalhava em período integral na Allianz Indonésia, ele adora compartilhar dicas sobre Python e dados nas mídias sociais e na mídia escrita.
 

Carimbo de hora:

Mais de KDnuggetsGenericName