File size: 2,373 Bytes
bfae78a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""

Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro



Este script só funciona com langchain versão 0.0.142

Você pode tentar executar ele com uma versão mais recente.

"""
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from langchain.chains import LLMChain
# WE ARE NOW IMPORTING THE SEQUENTIAL CHAIN
from langchain.chains import SequentialChain

# Importar para respostas de streaming:
from langchain.callbacks.base import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler


from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
#openai.api_key  = os.environ['OPENAI_API_KEY']


llm = OpenAI(streaming=True,
             callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]),
             verbose=True, temperature=0
            )

# Para usar o LLMChain, primeiro criamos um modelo de prompt.
# DEFINIMOS TRÊS VARIÁVEIS DE ENTRADA: technology, tone, duração e 
expand_prompt = PromptTemplate(
    input_variables=["technology", "tone", "how long"],
    template="Escreva uma descrição de {how long} no tom de {tone} explicando a seguinte tecnologia: {technology}",
)

# We can now create a very simple chain that will take user input, format the prompt with it, and then send it to the LLM.
# WE DEFINE THE OUTPUT KEY AS text
expand_chain = LLMChain(llm=llm, prompt=expand_prompt, output_key="text")

# Defina o prompt para a segunda cadeia:
review_prompt = PromptTemplate(
    input_variables=["text"],
    template="""Escreva uma resenha de quão bem escrito o texto a seguir está: {text}?

    Revisão do texto quanto à gramática, ortografia e tom:""",
)
# Defina a segunda chain:
review_chain = LLMChain(llm=llm,
                        prompt=review_prompt,
                        output_key="review"
                       )


multi_chain_multi_input_multi_output = SequentialChain(chains=[expand_chain, review_chain], verbose=False, input_variables=["technology", "tone", "how long"],  output_variables=["text", "review"])

# Execute a cadeia especificando apenas as variáveis de entrada COMO DICIONÁRIO.NO RUN METHOD THIS TIME
resp = multi_chain_multi_input_multi_output({"technology": "Docker", "tone": "Informal", "how long": "20 palavras como máximo"})