EddyGiusepe commited on
Commit
c1b7b41
1 Parent(s): 8280d69

Deploy do LLM

Browse files
.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ # EddyGiusepe
2
+ venv_LLM/
3
+ .env
1_Guide_to_Chroma_DB_A_Vector_Store_for_Your_Generative_AI_LLMs/Guide_to_Chroma_DB_A_Vector_Store_for_Your_Generative_AI_LLMs.ipynb CHANGED
@@ -148,9 +148,7 @@
148
  "execution_count": null,
149
  "metadata": {},
150
  "outputs": [],
151
- "source": [
152
- "Chroma_DB_Tutorial_A_Step-By-Step_Guide"
153
- ]
154
  }
155
  ],
156
  "metadata": {
 
148
  "execution_count": null,
149
  "metadata": {},
150
  "outputs": [],
151
+ "source": []
 
 
152
  }
153
  ],
154
  "metadata": {
All_you_need_to_know_to_Develop_using_Large_Language_Models.ipynb ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "<h1 align=\"center\"><font color=\"pink\">Tudo que você precisa saber para desenvolver usando grandes modelos de linguagem</font></h1>"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "<font color=\"yellow\">Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro</font>"
15
+ ]
16
+ },
17
+ {
18
+ "cell_type": "markdown",
19
+ "metadata": {},
20
+ "source": [
21
+ "Link de estudo:\n",
22
+ "\n",
23
+ "* [Tutorial: Sergei Savvov](https://towardsdatascience.com/all-you-need-to-know-to-develop-using-large-language-models-5c45708156bc)"
24
+ ]
25
+ },
26
+ {
27
+ "cell_type": "markdown",
28
+ "metadata": {},
29
+ "source": [
30
+ "# <font color=\"red\">Contextualizando</font>"
31
+ ]
32
+ },
33
+ {
34
+ "cell_type": "markdown",
35
+ "metadata": {},
36
+ "source": [
37
+ "O objetivo deste artigo é explicar em termos simples as `principais tecnologias` necessárias para começar a desenvolver aplicações baseadas em `LLM`. Destina-se a desenvolvedores de software, `cientistas de dados` e entusiastas de IA que possuem um conhecimento básico dos conceitos de aprendizado de máquina e desejam se aprofundar. O artigo também fornece vários links úteis para estudos adicionais. Vai ser interessante!"
38
+ ]
39
+ },
40
+ {
41
+ "cell_type": "code",
42
+ "execution_count": null,
43
+ "metadata": {},
44
+ "outputs": [],
45
+ "source": [
46
+ "# Substitua sua chave de API OpenAI:\n",
47
+ "import openai\n",
48
+ "import os\n",
49
+ "from dotenv import load_dotenv, find_dotenv\n",
50
+ "_ = load_dotenv(find_dotenv()) # read local .env file\n",
51
+ "openai.api_key = os.environ['OPENAI_API_KEY']\n"
52
+ ]
53
+ },
54
+ {
55
+ "cell_type": "code",
56
+ "execution_count": null,
57
+ "metadata": {},
58
+ "outputs": [],
59
+ "source": []
60
+ },
61
+ {
62
+ "cell_type": "code",
63
+ "execution_count": null,
64
+ "metadata": {},
65
+ "outputs": [],
66
+ "source": []
67
+ },
68
+ {
69
+ "cell_type": "code",
70
+ "execution_count": null,
71
+ "metadata": {},
72
+ "outputs": [],
73
+ "source": []
74
+ },
75
+ {
76
+ "cell_type": "code",
77
+ "execution_count": null,
78
+ "metadata": {},
79
+ "outputs": [],
80
+ "source": []
81
+ },
82
+ {
83
+ "cell_type": "code",
84
+ "execution_count": null,
85
+ "metadata": {},
86
+ "outputs": [],
87
+ "source": []
88
+ },
89
+ {
90
+ "cell_type": "code",
91
+ "execution_count": null,
92
+ "metadata": {},
93
+ "outputs": [],
94
+ "source": []
95
+ },
96
+ {
97
+ "cell_type": "code",
98
+ "execution_count": null,
99
+ "metadata": {},
100
+ "outputs": [],
101
+ "source": []
102
+ },
103
+ {
104
+ "cell_type": "code",
105
+ "execution_count": null,
106
+ "metadata": {},
107
+ "outputs": [],
108
+ "source": []
109
+ },
110
+ {
111
+ "cell_type": "code",
112
+ "execution_count": null,
113
+ "metadata": {},
114
+ "outputs": [],
115
+ "source": []
116
+ },
117
+ {
118
+ "cell_type": "code",
119
+ "execution_count": null,
120
+ "metadata": {},
121
+ "outputs": [],
122
+ "source": []
123
+ }
124
+ ],
125
+ "metadata": {
126
+ "language_info": {
127
+ "name": "python"
128
+ }
129
+ },
130
+ "nbformat": 4,
131
+ "nbformat_minor": 2
132
+ }
main.py ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro
3
+
4
+ Este script tem que ser otimizado !!!
5
+
6
+
7
+ https://www.datacamp.com/tutorial/chromadb-tutorial-step-by-step-guide
8
+
9
+ https://abhishektatachar.medium.com/run-chroma-db-on-a-local-machine-and-as-a-docker-container-a9d4b91d2a97
10
+
11
+ https://docs.trychroma.com/usage-guide
12
+ """
13
+ import chromadb
14
+ from chromadb.utils import embedding_functions
15
+ import openai
16
+
17
+ client = chromadb.Client()
18
+ #client.reset() # Esvazia e redefine completamente o banco de dados. Isso é destrutivo e irreversível.
19
+ #client.delete_collection(name="my_collection")
20
+ print(client.list_collections())
21
+ #collection = client.create_collection("my_collection")
22
+ #client.heartbeat()
23
+
24
+ # Substitua sua chave de API OpenAI:
25
+ import openai
26
+ import os
27
+ from dotenv import load_dotenv, find_dotenv
28
+ _ = load_dotenv(find_dotenv()) # read local .env file
29
+ openai.api_key = os.environ['OPENAI_API_KEY']
30
+
31
+ # # Isto é quando usas o arquivo .env:
32
+ # from dotenv import load_dotenv
33
+ # import os
34
+ # print('Carregando a minha chave Key: ', load_dotenv())
35
+ # Eddy_API_KEY_OpenAI = os.environ['OPENAI_API_KEY']
36
+
37
+ student_info = """
38
+ Alexandra Thompson, uma estudante do segundo ano de ciências físicas de 19 anos com um GPA de 3.7, é membro \
39
+ dos clubes de programação e xadrez e gosta de pizza, nadar e fazer caminhadas em seu tempo livre na esperança \
40
+ de trabalhar em uma empresa de tecnologia depois de se formar no Universidade de Washington.
41
+ """
42
+
43
+ club_info = """
44
+ O clube de xadrez universitário oferece uma oportunidade para os alunos se reunirem e se divertirem jogando o clássico \
45
+ jogo de estratégia de xadrez. Membros de todos os níveis são bem-vindos, desde iniciantes aprendendo as regras até \
46
+ jogadores experientes de torneios. O clube normalmente se reúne algumas vezes por semana para jogar jogos casuais, \
47
+ participar de torneios, analisar partidas de xadrez famosas e melhorar as habilidades dos membros.
48
+ """
49
+
50
+ university_info = """
51
+ A Universidade de Washington, fundada em 1861 em Seattle, é uma universidade pública de pesquisa com mais de 45000 alunos \
52
+ em três campi em Seattle, Tacoma e Bothell. Como instituição emblemática das seis universidades públicas do estado de Washington, \
53
+ 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.
54
+ """
55
+
56
+
57
+
58
+
59
+ class Retriver:
60
+ def __init__(self):
61
+ pass
62
+
63
+ def get_retrieval_results(self, input, k=1):
64
+
65
+ openai_ef = embedding_functions.OpenAIEmbeddingFunction(model_name="text-embedding-ada-002")
66
+ students_embeddings = openai_ef([student_info, club_info, university_info])
67
+ collection = client.get_or_create_collection(name="my_collection", embedding_function=openai_ef)
68
+
69
+ collection.add(
70
+ embeddings = students_embeddings,
71
+ documents = [student_info, club_info, university_info],
72
+ metadatas = [{"source": "student info"},{"source": "club info"},{'source':'university info'}],
73
+ ids = ["id1", "id2", "id3"]
74
+ )
75
+
76
+ retrieval_results = collection.query(
77
+ query_embeddings=openai_ef(input),
78
+ #query_texts=[input],
79
+ n_results=k,
80
+ )
81
+
82
+ return retrieval_results["documents"][0]
83
+
84
+
85
+ # Você é um assistente prestativo que responde às queries do usuário em base as informações recebidas.
86
+ class Generator:
87
+ def __init__(self, openai_model="gpt-3.5-turbo-1106"): # gpt-4
88
+ self.openai_model = openai_model
89
+ self.prompt_template = """Sumarize a resposta recuperada: ```{text}```. Ademais a sua resposta deve conter como máximo 20 palavras."""
90
+
91
+ def generate_response(self, text):
92
+ # prompts = []
93
+ # for result in retrieval_results:
94
+ # prompt = self.prompt_template.format(answer_rec=result)
95
+ # prompts.append(prompt)
96
+ # prompts.reverse()
97
+ prompt = self.prompt_template.format(text=text)
98
+
99
+
100
+ response = openai.ChatCompletion.create(
101
+ model=self.openai_model,
102
+ messages=[{"role": "assistant", "content": prompt}],
103
+ temperature=0,
104
+ )
105
+ sumarizando = response["choices"][0]["message"]["content"]
106
+ return sumarizando
107
+
108
+
109
+ class Chatbot:
110
+ def __init__(self):
111
+ self.retriver = Retriver()
112
+ self.generator = Generator()
113
+
114
+ def answer(self, input):
115
+ retrieval_results = self.retriver.get_retrieval_results(input)
116
+ return self.generator.generate_response(retrieval_results)
117
+
118
+
119
+
120
+ # Creating an instance of the Chatbot class
121
+ chatbot = Chatbot()
122
+
123
+ while True:
124
+ user_input = input("You: ") # Taking user input from the CLI
125
+ response = chatbot.answer(user_input)
126
+ print(f"Chatbot: {response}")