Tutorial LangChain(Python) – Parte 02

Vamos continuar o nosso tutorial de um projeto LangChain Python e Streamlit.

Vamos agora inserir o PromptTemplate em nosso projeto.

Para iniciarmos, vamos nos lembrar onde paramos. Este abaixo é o código do nosso projeto até o momento.

from langchain.llms import OpenAI
from dotenv import load_dotenv

load_dotenv()

def generate_pet_name():
    llm = OpenAI(temperature=0.7)

    name = llm(“Please, give me 5 suggestions for dog names”)
    return name

if __name__ == “__main__”
    print(generate_pet_name())

E temos até o momento os seguintes arquivos e pastas no diretório do nosso projeto:

Uma pasta chamada .venv
Dois arquivos: .env e main.py

Então, vamos acrescentar o Prompt Template, no nosso projeto, inserindo a seguinte linha de código:

prompt_template_name = PromptTemplate()

Para usarmos essa classe PromptTemplate() em nosso código, precisamos primeiro importá-la para o nosso script. Para isso inserimos o seguinte no topo do nosso script:

from langchain.prompts import PromptTemplate

Vamos agora, acrescentar um variável na classe PromptTemplate(). Vamos fazer da seguinte forma:

prompt_template_name = PromptTemplate(
    input_variables=['animal_type']
)

E precisamos também acrescentar essa variável como parâmetro de nossa função generate_pet_name().

def generate_pet_name(animal_type)

E vamos também, acrescentar um PromptTemplate:

prompt_template_name = PromptTemplate(
    input_variables=['animal_type']
    template=(“Please, give me 5 suggestions for dog names”)
)

Vamos substituir a palavra dog do prompt por um place holder chamado {animal_type}. Então, o nosso código vai ficar assim:

template=(“Please, give me 5 suggestions for {animal_type} names”)

Como isso, o nosso script recebe dinamicamente o tipo de animal que o usuário informar.

Vamos agora, acrescentar a classe LLMChain ao nosso projeto da seguinte forma:

from langchain.chains import LLMChains

Com o LLMChains nós podemos combinar o nosso objeto llm e o prompt_template_name, para enviarmos o nosso prompt ao ChatGPT e recebermos a resposta.

Para isso, vamos fazer da seguinte forma:

name_chain = LLMChain(llm=llm, prompt=prompt_template_name)

Em seguida, acrescentamos o seguinte:

response = name_chain({'animal_type': 'animal_type'})
return response

Agora, podermos fazer uso de parâmetros quando executamos a nossa função:

print(generate_pet_name("cat"))

Agora, vamos executar o nosso script, usando o seguinte comando em nosso terminal:

python main.py

Como resposta, nós temos uma json resposta com os nomes sugeridos pela LLM.

{'animal_type': 'cat', 'text': '\n\n1. Mochi\2. Nacho\n3. Pebbles\n4. Tiger\n5. Whiskers'}

Agora, podemo adicionar um segundo parâmetro para a nossa função que seria a cor do animal. E nós vamos fazer isso da seguinte forma:

def generate_pet_name(animal_type, pet_color)

Vamos também precisar acrescentar no input_variables do PromptTemplate:

input_variables=['animal_type', 'pet_color']

Agora, vamos acrescentar também a nova variável no prompt template:

 template=(“Please, give me 5 suggestions for my {pet_color}{animal_type} names”)

Vamos, também precisar acrescentar esse variável como parâmetro do nosso objeto name_chain:

response = name_chain({'animal_type': 'animal_type', 'pet_color': 'pet_color'})

Pronto, agora podemos executar o nosso script, passando duas variáveis. Uma informando o tipo de animal e a outra informando a cor do animal.

print(generate_pet_name("cat", "black"))

E na resposta, podermos verificar que o script está passando essas duas informações para o LLM e recebendo a resposta.(JSON formato)

{'animal_type': 'Dog', 'pet_color': 'black', 'text': '\n\n1. Shadow\n2. Midnight\n3. Onyx\n4. Coal\n5. Jet'}

Perfeito! O nosso script está funcionando!

Aqui está todo o código do nosso script até o momento:

from langchain_openai import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from dotenv import load_dotenv

load_dotenv()

def generate_pet_name(animal_type, pet_color):
    #Criando uma instância(objeto) da classe OpenAI, passando um único parâmetro ao construtor.
    llm = OpenAI(temperature=0.7)

    prompt_tamplate_name = PromptTemplate(
        input_variables=['animal_type', 'pet_color'],
        template="I just got a {pet_color}{animal_type} and I would like to give it a name. Could you please, helpe me with that? Could you suggest 5 names for my pet?"
    )
    #Vamos passar o nosso prompt, e receber a resposta da LLM, usando o nosso objeto llm.
    name_chain = LLMChain(llm=llm, prompt=prompt_tamplate_name)

    response = name_chain({'animal_type': animal_type, 'pet_color': pet_color})
    return response

if __name__ == "__main__":
    print(generate_pet_name("Dog", "black"))

No próximo tutorial, vamos construir uma web interace para o nosso projeto.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *