Spaces:
No application file
No application file
| """ | |
| Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro | |
| Este script tem que ser otimizado !!! | |
| https://www.datacamp.com/tutorial/chromadb-tutorial-step-by-step-guide | |
| https://abhishektatachar.medium.com/run-chroma-db-on-a-local-machine-and-as-a-docker-container-a9d4b91d2a97 | |
| https://docs.trychroma.com/usage-guide | |
| """ | |
| import chromadb | |
| from chromadb.utils import embedding_functions | |
| import openai | |
| client = chromadb.Client() | |
| #client.reset() # Esvazia e redefine completamente o banco de dados. Isso é destrutivo e irreversível. | |
| #client.delete_collection(name="my_collection") | |
| print(client.list_collections()) | |
| #collection = client.create_collection("my_collection") | |
| #client.heartbeat() | |
| # Substitua sua chave de API OpenAI: | |
| import openai | |
| import os | |
| from dotenv import load_dotenv, find_dotenv | |
| _ = load_dotenv(find_dotenv()) # read local .env file | |
| openai.api_key = os.environ['OPENAI_API_KEY'] | |
| # # Isto é quando usas o arquivo .env: | |
| # from dotenv import load_dotenv | |
| # import os | |
| # print('Carregando a minha chave Key: ', load_dotenv()) | |
| # Eddy_API_KEY_OpenAI = os.environ['OPENAI_API_KEY'] | |
| student_info = """ | |
| Alexandra Thompson, uma estudante do segundo ano de ciências físicas de 19 anos com um GPA de 3.7, é membro \ | |
| dos clubes de programação e xadrez e gosta de pizza, nadar e fazer caminhadas em seu tempo livre na esperança \ | |
| de trabalhar em uma empresa de tecnologia depois de se formar no Universidade de Washington. | |
| """ | |
| club_info = """ | |
| O clube de xadrez universitário oferece uma oportunidade para os alunos se reunirem e se divertirem jogando o clássico \ | |
| jogo de estratégia de xadrez. Membros de todos os níveis são bem-vindos, desde iniciantes aprendendo as regras até \ | |
| jogadores experientes de torneios. O clube normalmente se reúne algumas vezes por semana para jogar jogos casuais, \ | |
| participar de torneios, analisar partidas de xadrez famosas e melhorar as habilidades dos membros. | |
| """ | |
| university_info = """ | |
| A Universidade de Washington, fundada em 1861 em Seattle, é uma universidade pública de pesquisa com mais de 45000 alunos \ | |
| em três campi em Seattle, Tacoma e Bothell. Como instituição emblemática das seis universidades públicas do estado de Washington, \ | |
| a UW abrange mais de 500 edifícios e 20 milhões de pés quadrados de espaço, incluindo um dos maiores sistemas de bibliotecas do mundo. | |
| """ | |
| class Retriver: | |
| def __init__(self): | |
| pass | |
| def get_retrieval_results(self, input, k=1): | |
| openai_ef = embedding_functions.OpenAIEmbeddingFunction(model_name="text-embedding-ada-002") | |
| students_embeddings = openai_ef([student_info, club_info, university_info]) | |
| collection = client.get_or_create_collection(name="my_collection", embedding_function=openai_ef) | |
| collection.add( | |
| embeddings = students_embeddings, | |
| documents = [student_info, club_info, university_info], | |
| metadatas = [{"source": "student info"},{"source": "club info"},{'source':'university info'}], | |
| ids = ["id1", "id2", "id3"] | |
| ) | |
| retrieval_results = collection.query( | |
| query_embeddings=openai_ef(input), | |
| #query_texts=[input], | |
| n_results=k, | |
| ) | |
| return retrieval_results["documents"][0] | |
| # Você é um assistente prestativo que responde às queries do usuário em base as informações recebidas. | |
| class Generator: | |
| def __init__(self, openai_model="gpt-3.5-turbo-1106"): # gpt-4 | |
| self.openai_model = openai_model | |
| self.prompt_template = """Sumarize a resposta recuperada: ```{text}```. Ademais a sua resposta deve conter como máximo 20 palavras.""" | |
| def generate_response(self, text): | |
| # prompts = [] | |
| # for result in retrieval_results: | |
| # prompt = self.prompt_template.format(answer_rec=result) | |
| # prompts.append(prompt) | |
| # prompts.reverse() | |
| prompt = self.prompt_template.format(text=text) | |
| response = openai.ChatCompletion.create( | |
| model=self.openai_model, | |
| messages=[{"role": "assistant", "content": prompt}], | |
| temperature=0, | |
| ) | |
| sumarizando = response["choices"][0]["message"]["content"] | |
| return sumarizando | |
| class Chatbot: | |
| def __init__(self): | |
| self.retriver = Retriver() | |
| self.generator = Generator() | |
| def answer(self, input): | |
| retrieval_results = self.retriver.get_retrieval_results(input) | |
| return self.generator.generate_response(retrieval_results) | |
| # Creating an instance of the Chatbot class | |
| chatbot = Chatbot() | |
| while True: | |
| user_input = input("You: ") # Taking user input from the CLI | |
| response = chatbot.answer(user_input) | |
| print(f"Chatbot: {response}") | |