samuel-moreira commited on
Commit
f84ab3e
1 Parent(s): 1c3a7a2

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +23 -12
main.py CHANGED
@@ -1,32 +1,43 @@
1
  from ctransformers import AutoModelForCausalLM
2
- from fastapi import FastAPI
3
  from pydantic import BaseModel
 
4
 
5
-
6
  llm = AutoModelForCausalLM.from_pretrained(
7
  "zephyr-7b-beta.Q4_K_S.gguf",
8
  model_type='llama3',
9
  max_new_tokens=2000,
10
  threads=10,
11
- context_length = 4096)
 
12
 
13
- #Pydantic object
14
- class validation(BaseModel):
15
  prompt: str
16
- #Fast API
 
17
  app = FastAPI()
18
 
19
- @app.post("/llm_on_cpu")
20
- async def stream(item: validation):
21
- print("Start")
22
  system_prompt = """Leia o currículo e classifique as entidades no meu estilo.
23
  Respeite o formato de saída JSON.
24
  Retorne APENAS O DICIONÁRIO JSON e nada mais.
25
  O nome dos campos sempre deve estar em português do Brasil.
26
  Respeite o nome dos campos. São eles: Nome, Email, Telefone, Localização, Experiência(e suas subchaves são Cargo, Empresa, Descrição, Data de Início e Data de Término), Formação(e suas subchaves são Formação, Instituição e Data de Conclusão) e Conhecimentos(suas subchaves são Conhecimento e Instituição).
27
- Geralmente a descrição da experiência vem descrita logo após o cargo. Procure e inclua esses dados no campo Descrição de cada Experiência.]
28
  Acrescente todas as informações que encontrar, todas devem ser classificadas nos seus respectivos campos. Não deixe passar nada.
29
  Caso não encontre alguma informação, retorne o campo com Null."""
30
  E_INST = "</s>"
31
- prompt = f"{system_prompt}{E_INST}\n{item.prompt}{E_INST}"
32
- return llm(prompt)
 
 
 
 
 
 
 
 
 
 
1
  from ctransformers import AutoModelForCausalLM
2
+ from fastapi import FastAPI, Request
3
  from pydantic import BaseModel
4
+ import asyncio
5
 
6
+ # Carregar o modelo
7
  llm = AutoModelForCausalLM.from_pretrained(
8
  "zephyr-7b-beta.Q4_K_S.gguf",
9
  model_type='llama3',
10
  max_new_tokens=2000,
11
  threads=10,
12
+ context_length=4096
13
+ )
14
 
15
+ # Objeto Pydantic
16
+ class Validation(BaseModel):
17
  prompt: str
18
+
19
+ # Inicializar FastAPI
20
  app = FastAPI()
21
 
22
+ # Função para gerar resposta incrementada
23
+ async def generate_response(prompt: str):
 
24
  system_prompt = """Leia o currículo e classifique as entidades no meu estilo.
25
  Respeite o formato de saída JSON.
26
  Retorne APENAS O DICIONÁRIO JSON e nada mais.
27
  O nome dos campos sempre deve estar em português do Brasil.
28
  Respeite o nome dos campos. São eles: Nome, Email, Telefone, Localização, Experiência(e suas subchaves são Cargo, Empresa, Descrição, Data de Início e Data de Término), Formação(e suas subchaves são Formação, Instituição e Data de Conclusão) e Conhecimentos(suas subchaves são Conhecimento e Instituição).
29
+ Geralmente a descrição da experiência vem descrita logo após o cargo. Procure e inclua esses dados no campo Descrição de cada Experiência.
30
  Acrescente todas as informações que encontrar, todas devem ser classificadas nos seus respectivos campos. Não deixe passar nada.
31
  Caso não encontre alguma informação, retorne o campo com Null."""
32
  E_INST = "</s>"
33
+ full_prompt = f"{system_prompt}{E_INST}\n{prompt}{E_INST}"
34
+
35
+ response = ""
36
+ for token in llm(full_prompt, stream=True):
37
+ response += token
38
+ yield token
39
+
40
+ @app.post("/llm_on_cpu")
41
+ async def stream(item: Validation):
42
+ print("Start")
43
+ return generate_response(item.prompt)