-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.py
88 lines (67 loc) · 2.5 KB
/
main.py
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
arafrom langchain.llms import OpenAI
from langchain.agents import initialize_agent, Tool
from langchain.chains.conversation.memory import ConversationBufferMemory
import streamlit as st
#funcao para calcular numero fibonnaci
def fib(n):
if n <= 1:
return n
else:
return(fib(n-1) + fib (n-2))
#definie função para organizar entrada em ordem alfabetica
def sort_string(string):
return ''.join(sorted(string))
#definir a função para transformar a palavra em criptografada
def encrypt(word):
encrypted_word = ""
for letter in word:
encrypted_word += chr(ord(letter) +1)
return encrypted_word
#definir a função para descriptografar a palavra
def decrypt(word):
decrypted_word = ""
for letter in word:
decrypted_word += chr(ord(letter) -1)
return decrypted_word
#declara ferramentas
tools = [
Tool(
name = "Fibonnaci",
func= lambda n: str(fib(int(n))),
description="usar quando você quiser calcular o nth do numero fibonacci"
# return_direct=true
),
Tool(
name = "Sort String",
func= lambda string: sort_string(string),
description="usar quando você quiser organizar uma string alfabeticamente"
# return_direct=true
),
Tool(
name = "Encrypt",
func= lambda word: encrypt(word),
description="usar quando você quiser criptografar uma palavra"
),
Tool(
name = "Decrypt",
func= lambda word: decrypt(word),
description="usar quando você quiser descriptografar uma palavra"
)
]
#para testar as ferramentas, explicite o uso da ferramenta, por exemplo "calcule o fibbonaci no numero 10" ou "criptografe a palavra 'batata'"
memory = ConversationBufferMemory(memory_key="chat_history")
llm=OpenAI(temperature=0, verbose=True)
#cadeia de atividades
agent_chain = initialize_agent(tools, llm, agent="conversational-react-description",memory=memory, verbose=True)
st.header(":blue[Langchain chatbot com agente, ferramentas e memória]")
user_input = st.text_input("Você: ")
#inicia buffer de memoria
if "memory" not in st.session_state:
st.session_state["memory"] = ""
#streamlit botão
if st.button("Enviar"):
st.markdown(agent_chain.run(input=user_input))
#exibe buffer de memoria
#adiciona histórico de conversas ao buffer de memoria
st.session_state["memory"] += memory.buffer
print(st.session_state["memory"])