Use o analisador de saída de Langchain para extrair informações da resposta rápida do ChatGPT
Este notebook Jupyter demonstra como usar StructuredOutputParser de Langchain para extrair informações estruturadas das respostas imediatas do ChatGPT.
Importa bibliotecas necessárias como OpenAI , LangChain e define uma instância ChatOpenAI .
Define Exemplo de estrutura de saída com campos como "gift" , "delivery_days" , "price_value" .
Mostra um exemplo de texto de revisão do cliente a ser analisado.
Construa objetos ResponseSchema para cada campo de saída.
Cria um StructuredOutputParser usando os esquemas de resposta.
Define um modelo rápido que incorpora as instruções de formato do analisador.
Solicita o Chatgpt a analisar o texto e a saída de revisão no formato estruturado.
Analisa a resposta JSON para extrair o presente, os dias de entrega e o valor do preço em um dicionário.
Em resumo, o notebook mostra como o analisador de saída do Langchain pode ser usado para obter dados estruturados de respostas de chatgpt de forma livre, permitindo a engenharia imediata para extração de informações.
Jupyter Notebook Link: Langchain_output_parser_prompt_engineering.ipynb (o experimento é realizado no Google Colab)
Para usar o modelo GPT-3.5-Turbo do OpenAI com Langchain, é necessária uma chave da API. A chave da API pode ser obtida daqui.
Para controlar a aleatoriedade e a criatividade do texto gerado pelo LLM, usamos a temperatura = 0,0 ao inicializar a instância ChatOpenAI . A temperatura é um valor numérico definido entre 0 e 1. Uma temperatura de 0 significa que o modelo sempre escolherá a palavra mais provável a gerar, enquanto uma temperatura de 1 significa que é mais provável que o modelo escolha palavras menos prováveis, resultando em saída mais criativa e inesperada. Em geral, a configuração ideal de temperatura depende da tarefa específica em questão. Para tarefas que exigem precisão e factualidade, como resposta a perguntas ou resumo do texto, geralmente é preferida uma temperatura mais baixa. Para tarefas que exigem criatividade e originalidade, como escrever poesia ou gerar idéias de histórias, uma temperatura mais alta pode ser mais adequada. Como nossa tarefa é extrair informações estruturadas das respostas imediatas do ChatGPT, definimos a temperatura para 0,0.
Analisador de saída: modelos de idiomas Texto de saída. Mas muitas vezes você deseja obter mais informações estruturadas do que apenas texto. É aqui que os analisadores de saída ajudam a estruturar as respostas dos modelos de linguagem. Existem dois métodos principais que um analisador de saída deve implementar:
Para nossa rápida engenharia, analisamos as avaliações dos clientes para extrair 3 informações:
Uma estrutura de exemplo da saída de uma revisão que queremos analisar:
{
"gift" : true ,
"delivery_days" : 3 ,
"price_value" : " pretty affordable! "
}Modelo de imediato:
For the following text, extract the following information:
gift: Was the item purchased as a gift for someone else?
Answer True if yes, False if not or unknown.
delivery_days: How many days did it take for the product
to arrive? If this information is not found, output -1.
price_value: Extract any sentences about the value or price,
and output them as a comma separated Python list.
text: {text}
{format_instructions}
Aqui, o texto refere -se à revisão do cliente e format_instructions é uma string que contém instruções sobre como a saída do modelo de idioma deve ser formatada.
A resposta do LLM pode ser facilmente alimentada no analisador de saída para obter dados estruturados em nosso formato JSON/dicionário desejado.
Como exemplo, usamos a seguinte revisão:
This leaf blower is pretty amazing. It has four settings:
candle blower, gentle breeze, windy city, and tornado.
It arrived in two days, just in time for my wife's
anniversary present.
I think my wife liked it so much she was speechless.
So far I've been the only one using it, and I've been
using it every other morning to clear the leaves on our lawn.
It's slightly more expensive than the other leaf blowers
out there, but I think it's worth it for the extra features.
O analisador de saída possui saída:
{
'gift': False,
'delivery_days': '2',
'price_value': "It's slightly more expensive than the other leaf blowers out there, but I think it's worth it for the extra features."
}