Olá,
Estou enfrentando um erro ao criar a "persona",
Só para entender melhor, estou conectando meu sistema ao LM Studio e usando o modelo de linguagem deepseek-r1-distill-llama-8b.
como pode notar ele reconhece a personalidade mas quebra o codigo logo depois.
app.py
def bot(prompt):
maximo_tentativas = 1
repeticao = 0
personalidade = personas[selecionar_persona(prompt)]
while True:
try:
prompt_do_sistema = f"""
Você é um chatbot de atendimento a clientes de um e-commerce.
Você não deve responder perguntas que não sejam dados do ecommerce informado!
Você deve adotar a persona abaixo.
# Persona
{personalidade}
Você deve gerar respostas utilizando o contexto abaixo.
# Contexto
{contexto}
"""
response = cliente.chat.completions.create(
messages=[
{
"role": "system",
"content": prompt_do_sistema
},
{
"role": "user",
"content": prompt
}
],
temperature=1,
#max_tokens=1200,
top_p=1,
frequency_penalty=0,
presence_penalty=0,
model = modelo)
return response
except Exception as erro:
repeticao += 1
if repeticao >= maximo_tentativas:
return "Erro no GPT: %s" % erro
print('Erro de comunicação com OpenAI:', erro)
sleep(1)
@app.route("/chat", methods=["POST"])
def chat():
prompt = request.json["msg"]
resposta = bot(prompt)
texto_resposta = resposta.choices[0].message.content
final_response = re.sub(r'<think>.*?</think>', '', texto_resposta, flags=re.DOTALL)
final_response = final_response.strip()
return final_response
@app.route("/")
def home():
return render_template("index.html")
if __name__ == "__main__":
app.run(debug = True)
selecionar_persona.py
cliente = OpenAI(base_url = "http://172.18.10.210:1234/v1/", api_key='lm-studio')
modelo = "model-identifier"
personas = {
'positivo': """
Assuma...
""",
'neutro': """
Assuma ...
"""
'negativo': """
Assuma ...
"""
}
def selecionar_persona(mensagem_usuario):
prompt_sistema = """
Faça uma análise da mensagem informada abaixo para identificar se o sentimento é: positivo,
neutro ou negativo. Retorne apenas um dos três tipos de sentimentos informados como resposta.
"""
resposta = cliente.chat.completions.create(
model=modelo,
messages=[
{
"role": "system",
"content": prompt_sistema
},
{
"role": "user",
"content" : mensagem_usuario
}
],
temperature=1,
)
resposta = resposta.choices[0].message.content
final_response = re.sub(r'<think>.*?</think>', '', resposta, flags=re.DOTALL)
final_response = final_response.strip()
return final_response.lower()