Generators
Funções utilitárias para geração de dados e modelos.
Generators
Fornece métodos para gerar dados sintéticos e modelos SQLAlchemy.
Source code in datalchemy/generators.py
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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | |
__init__(manager, OPENAI_API_KEY)
Inicializa o gerador de dados.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
manager
|
DatabaseConnectionManager
|
Gerenciador de conexões com bancos de dados. |
required |
OPENAI_API_KEY
|
str
|
Chave de autenticação da API da OpenAI. |
required |
Source code in datalchemy/generators.py
17 18 19 20 21 22 23 24 25 26 27 28 29 | |
count_tokens(msg, model='gpt-3.5-turbo-16k')
staticmethod
Conta o número de tokens de uma mensagem usando o modelo especificado.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
msg
|
str
|
Mensagem para calcular os tokens. |
required |
model
|
str
|
Modelo OpenAI utilizado para calcular os tokens. |
'gpt-3.5-turbo-16k'
|
Returns:
| Name | Type | Description |
|---|---|---|
int |
Número de tokens na mensagem. |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
Se ocorrer um erro ao contar os tokens. |
Source code in datalchemy/generators.py
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 | |
fetch_model_response(prompt, content, database_structure, model, max_tokens, temp)
Obtém a resposta do modelo OpenAI com base no prompt fornecido e no conteúdo.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
str
|
Mensagem enviada pelo usuário. |
required |
content
|
str
|
Mensagem de sistema com instruções para o modelo. |
required |
database_structure
|
dict
|
Estrutura do banco de dados a ser incluída no contexto. |
required |
model
|
str
|
Modelo OpenAI a ser utilizado. |
required |
max_tokens
|
int
|
Número máximo de tokens permitidos na resposta. |
required |
temp
|
float
|
Grau de criatividade da resposta. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
str |
Resposta do modelo no formato esperado. |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
Se ocorrer um erro ao comunicar com a API da OpenAI. |
Source code in datalchemy/generators.py
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | |
filter_tables(database_structure, tables_to_keep)
staticmethod
Filtra o dicionário para manter apenas as tabelas especificadas.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
database_structure
|
dict
|
O dicionário original contendo a estrutura completa. |
required |
tables_to_keep
|
list
|
Uma lista das tabelas que devem ser mantidas. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Um novo dicionário contendo apenas as tabelas filtradas. |
Source code in datalchemy/generators.py
335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | |
generate_data(db_name, prompt, model='gpt-3.5-turbo-16k', max_tokens=16385, temp=0.3, qtd_lines=100)
Gera dados sintéticos usando o modelo OpenAI com base em um prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
db_name
|
str
|
Nome do banco de dados associado à geração de dados. |
required |
prompt
|
str
|
Mensagem enviada ao modelo para geração de dados. |
required |
model
|
str
|
Modelo OpenAI a ser utilizado. |
'gpt-3.5-turbo-16k'
|
max_tokens
|
int
|
Número máximo de tokens permitidos na resposta. É recomendável não alterar este valor, pois a função calcula automaticamente a melhor utilização de tokens. |
16385
|
temp
|
float
|
Grau de criatividade da resposta. |
0.3
|
qtd_lines
|
int
|
Quantidade máxima de linhas de dados a serem geradas. |
100
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
Resposta em JSON com os dados gerados. |
Raises:
| Type | Description |
|---|---|
ValueError
|
Se o banco de dados não for encontrado. |
RuntimeError
|
Se ocorrer um erro na comunicação com a API da OpenAI. |
Source code in datalchemy/generators.py
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 89 90 91 | |
generate_models(db_name, save_to_file=False)
Gera os modelos SQLAlchemy do banco de dados especificado.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
db_name
|
str
|
Nome do banco de dados a ser utilizado. |
required |
save_to_file
|
bool
|
Indica se o código gerado deve ser salvo em arquivo. Default é False. |
False
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
Código gerado pelo sqlacodegen. |
Raises:
| Type | Description |
|---|---|
ValueError
|
Se o banco de dados não for encontrado. |
RuntimeError
|
Se ocorrer um erro ao gerar os modelos. |
Source code in datalchemy/generators.py
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | |
get_metadata(engine)
staticmethod
Retorna a estrutura do banco de dados a partir dos metadados.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
engine
|
Instância do SQLAlchemy Engine conectada ao banco de dados. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Dicionário contendo informações sobre tabelas, colunas e chaves estrangeiras. |
Source code in datalchemy/generators.py
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 | |
get_parental_tables(llm_response, db_structure)
staticmethod
Valida se todas as tabelas pai necessárias para as tabelas filhas na resposta da LLM estão presentes. Se uma tabela pai estiver ausente, ela será adicionada na primeira posição.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
llm_response
|
str
|
Resposta JSON da LLM contendo as tabelas geradas. |
required |
db_structure
|
dict
|
Estrutura do banco de dados como dicionário. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
list |
Lista atualizada de tabelas com tabelas pai adicionadas. |
Raises:
| Type | Description |
|---|---|
ValueError
|
Se a resposta da LLM não contiver tabelas ou retornar um erro. |
Source code in datalchemy/generators.py
265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 | |
read_prompts()
staticmethod
Retorna os prompts pré-definidos usados na geração de dados e identificação de tabelas.
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Dicionário contendo os prompts utilizados pelo sistema. |
Source code in datalchemy/generators.py
322 323 324 325 326 327 328 329 330 331 332 333 | |