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.