diff --git a/main.py b/main.py index 2f745c9..1ccf7db 100644 --- a/main.py +++ b/main.py @@ -27,9 +27,11 @@ import re from langid.langid import LanguageIdentifier from langid.langid import model as modellangid import time -model="Modelo_embedding_Mexico_Puebla/all-mpnet-base-v2/model" +from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT +import json +model="Modelo_embedding_Mexico_Puebla/paraphrase-multilingual-mpnet-base-v2/model" entrenamiento="V1.3" - +keyanthropic="" class CustomEmbedding(Embeddings, BaseModel,): @@ -199,7 +201,83 @@ def calculate_api(response: Response): id.append(i[0]) return {"ids": id,"DC":dis,"modelo":versionL} - +@app.post("/angela-api-claude/") +def calculate_api_claude(response: Response): + anthropic = Anthropic(api_key=keyanthropic) + query = response.query + try: + filtred = response.filtred + except: + filtred = -9.0 + + AllData=FinderDbs(query,[db2,db],filtred) + versionL="_".join([model,entrenamiento]) + if AllData: + AllData = list(AllData) + dis=[] + id=[] + for k,i in enumerate(AllData[0].items()): + dis.append(str(i[1]['d'])) + id.append(i[0]) + if len(id)<1: + return {"text": {"completion": "No tengo información sobre este tema", + "model": "claude-2.1", + "stop_reason": "stop_sequence", + "type": "completion", + "id": "1", + "stop": "\n\nHuman:", + "log_id": "1" + },"text2": { + "completion":"No tengo información sobre este tema", + "model": "claude-2.1", + "stop_reason": "stop_sequence", + "type": "completion", + "id": "1", + "stop": "\n\nHuman:", + "log_id": "1" + } + } + pathsqlite="/opt/web2py/applications/MotorAngela/databases/storage.sqlite" + con = sqlite3.connect(pathsqlite) + copies_df = pd.read_sql_query("SELECT * from copies WHERE intentionality IS NOT NULL", con) + copie = copies_df[copies_df["id"]==id[0]]["copy_message"].values[0] + promptF=f"""{HUMAN_PROMPT} Tengo un contexto por favor generame un resumen, el resumen deben ser con lenguaje amable para un publico mexicano y como si fuera una conversacion con la persona. + """ + promptF3=promptF+f""" +%s +{AI_PROMPT}"""%(copie) + completion = anthropic.completions.create( + model="claude-2", + max_tokens_to_sample=600, + prompt=promptF3, + ) + + pregunta=query + promptFv2=f"""Tu eres un asistente de IA en chatbot llamado Angela, como asistente tu labor es ayudar a los usuarios de la pagina web de la alcaldia de puebla respondiendo sus preguntas. +Aqui te dare las reglas que debes seguir durante la conversacion: + +- Siempre te mantendras en el personaje Angela. +- Si no estas seguro de la respuesta basada en el contexto responde el suigiente texto: "Lo siento, podrias formular la pregunta de nuevo es que no entendi tu pregunta por que soy un sistema que esta en mejora en este momento". +- No menciones el contexto si la pregunta no puede ser contestada con el. +- Siempres responderas de manera amable pero formal. + + +%s + +{HUMAN_PROMPT} Tengo la siguiente pregunta entre la etiqueta y basandote en el contexto que esta en la etiqueta responde la pregunta entre la etiqueta : + +%s + +"""%(copie,pregunta) + + promptF3v2=promptFv2+f""" +{AI_PROMPT}""" + completionv2 = anthropic.completions.create( + model="claude-2.1", + max_tokens_to_sample=600, + prompt=promptF3v2, + ) + return {"text":completion,"text2":completionv2}