Kadoblam commited on
Commit
80769a7
·
1 Parent(s): ea9ee44

Atualiza app.py para usar modelo Qwen-4B-Instruct

Browse files
Files changed (1) hide show
  1. app.py +53 -1
app.py CHANGED
@@ -1,8 +1,10 @@
1
  import os
2
- from fastapi import FastAPI
 
3
  from pydantic import BaseModel
4
  from openai import OpenAI
5
  import langdetect
 
6
 
7
  app = FastAPI()
8
 
@@ -59,3 +61,53 @@ async def ask_model(query: Query):
59
  answer = completion.choices[0].message.content.strip()
60
 
61
  return {"answer": answer}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import os
2
+ from fastapi import FastAPI, Request
3
+ from fastapi.responses import PlainTextResponse
4
  from pydantic import BaseModel
5
  from openai import OpenAI
6
  import langdetect
7
+ from twilio.twiml.messaging_response import MessagingResponse
8
 
9
  app = FastAPI()
10
 
 
61
  answer = completion.choices[0].message.content.strip()
62
 
63
  return {"answer": answer}
64
+
65
+
66
+ @app.post("/whatsapp")
67
+ async def whatsapp_webhook(request: Request):
68
+ form = await request.form()
69
+ incoming_msg = form.get("Body")
70
+
71
+ try:
72
+ idioma = langdetect.detect(incoming_msg)
73
+ except:
74
+ idioma = "pt"
75
+
76
+ if idioma == "pt":
77
+ system_prompt = (
78
+ "Você é um assistente que responde sempre em texto puro, SEM formatação Markdown, SEM asteriscos, SEM negrito, SEM itálico, SEM listas, SEM códigos.\n\n"
79
+ "Quando responder em japonês, escreva sempre os caracteres japoneses reais (kanji, hiragana e katakana) e, logo após, entre parênteses, a transliteração romaji.\n\n"
80
+ "Não substitua os caracteres japoneses por espaços, asteriscos ou quaisquer símbolos. Use sempre os caracteres reais e mantenha a resposta em texto simples.\n\n"
81
+ "Exemplo de resposta correta:\n\n"
82
+ "こんにちは (Konnichiwa) significa \"Olá\".\n\n"
83
+ "Responda brevemente e de forma direta."
84
+ )
85
+ elif idioma == "en":
86
+ system_prompt = (
87
+ "You are an assistant that always responds in plain text, WITHOUT Markdown formatting, WITHOUT asterisks, bold, italics, lists, or code.\n\n"
88
+ "When responding in Japanese, always write the real Japanese characters (kanji, hiragana, and katakana) followed immediately by the romaji transliteration in parentheses.\n\n"
89
+ "Do not replace Japanese characters with spaces, asterisks, or any symbols. Always use the real characters and keep the response in plain text.\n\n"
90
+ "Example of correct response:\n\n"
91
+ "こんにちは (Konnichiwa) means \"Hello\".\n\n"
92
+ "Respond briefly and directly."
93
+ )
94
+ else:
95
+ system_prompt = (
96
+ "Responda no mesmo idioma da pergunta, de forma direta e curta, sem formatação Markdown."
97
+ )
98
+
99
+ completion = client.chat.completions.create(
100
+ model="meta-llama/Llama-3.1-8B-Instruct:fireworks-ai",
101
+ messages=[
102
+ {"role": "system", "content": system_prompt},
103
+ {"role": "user", "content": incoming_msg}
104
+ ],
105
+ max_tokens=250
106
+ )
107
+ answer = completion.choices[0].message.content.strip()
108
+
109
+ resp = MessagingResponse()
110
+ msg = resp.message()
111
+ msg.body(answer)
112
+
113
+ return PlainTextResponse(str(resp), media_type="application/xml")