FabioSantos commited on
Commit
c47210d
·
verified ·
1 Parent(s): ff25ab9

Update api.py

Browse files
Files changed (1) hide show
  1. api.py +50 -17
api.py CHANGED
@@ -10,29 +10,59 @@ class Question(BaseModel):
10
  # Inicializando o FastAPI
11
  app = FastAPI()
12
 
 
 
 
 
 
13
 
14
- llm = Llama.from_pretrained(
15
- repo_id="FabioSantos/curso_Finetune_Llama3.2_v1",
16
- filename="unsloth.Q8_0.gguf",
 
 
 
 
17
  )
18
 
 
 
19
 
20
- def get_response(text: str) -> str:
 
 
 
 
 
 
 
21
 
22
- response = llm.create_chat_completion(
23
- messages=[
24
- {
25
- "role": "user",
26
- "content": text # Correção: Remover as chaves {} que estavam criando um set
27
- }
28
- ],
29
- temperature=0.1 # Ajuste a temperatura aqui
30
  )
 
 
 
 
 
 
 
 
 
 
31
 
32
- response_text = response['choices'][0]['message']['content']
33
-
34
-
35
- return response_text
 
 
 
 
36
 
37
 
38
  # Endpoint para receber uma questão e retornar a resposta
@@ -41,5 +71,8 @@ def ask_question(question: Question):
41
  response = get_response(question.text)
42
  return {"response": response}
43
 
44
-
 
 
 
45
 
 
10
  # Inicializando o FastAPI
11
  app = FastAPI()
12
 
13
+ # Download e configuração do modelo
14
+ model_name_or_path = "FabioSantos/llama3_1_fn"
15
+ model_basename = "unsloth.Q8_0.gguf"
16
+ model_path = hf_hub_download(repo_id=model_name_or_path, filename=model_basename)
17
+ print(f"Model path: {model_path}")
18
 
19
+ # Configuração do modelo com llama_cpp
20
+ lcpp_llm = Llama(
21
+ model_path=model_path,
22
+ n_threads=2,
23
+ n_batch=512,
24
+ n_gpu_layers=-1,
25
+ n_ctx=4096,
26
  )
27
 
28
+ # Formato de prompt utilizado no fine-tuning
29
+ alpaca_prompt = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.
30
 
31
+ ### Instruction:
32
+ {}
33
+
34
+ ### Input:
35
+ {}
36
+
37
+ ### Response:
38
+ {}"""
39
 
40
+ def get_response(text: str) -> str:
41
+ # Formatar o prompt usando o mesmo template utilizado no fine-tuning
42
+ formatted_prompt = alpaca_prompt.format(
43
+ "Você é um assistente do serviço de atendimento ao cliente que deve responder as perguntas dos clientes",
44
+ text,
45
+ ""
 
 
46
  )
47
+ response = lcpp_llm(
48
+ prompt=formatted_prompt,
49
+ max_tokens=256,
50
+ temperature=0.5,
51
+ top_p=0.95,
52
+ top_k=50,
53
+ stop=['### Response:'], # Usar "### Response:" como token de parada
54
+ echo=True
55
+ )
56
+ response_text = response['choices'][0]['text']
57
 
58
+ # Extrair a resposta após "### Response:"
59
+ if "### Response:" in response_text:
60
+ answer = response_text.split("### Response:")[1].strip()
61
+ else:
62
+ answer = response_text.strip()
63
+
64
+ print(f"Final Answer: {answer}")
65
+ return answer
66
 
67
 
68
  # Endpoint para receber uma questão e retornar a resposta
 
71
  response = get_response(question.text)
72
  return {"response": response}
73
 
74
+ # Executa a aplicação
75
+ if __name__ == "__main__":
76
+ import uvicorn
77
+ uvicorn.run(app, host="0.0.0.0", port=8000)
78