from app.models import modelo_vector
from app.langchain_lhia.funciones_langchain.filtro_vectores import vectores
from langchain_community.vectorstores import Milvus
from langchain_openai import OpenAIEmbeddings

def pregunta_milvusr(pregunta:str):
    embeddings = OpenAIEmbeddings(
    model="text-embedding-3-large",
    openai_api_key="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"
    )

    milvus=Milvus(
    embeddings,
    collection_name="danec",
    connection_args={"host": "74.208.60.79", "port": "19530"},
)
    contenido=""
    titulos=[]
    query = pregunta
    docs=milvus.similarity_search_with_score(query,k=5)
    for documento, puntaje in docs:
        if puntaje>0.1:
            contenido+=documento.page_content+"\n\n"
            titulos.append(documento.metadata["namespace"])
    if len(titulos)>0:
        modelo = modelo_vector.RespuestaPgVector(contenido=contenido,documento=titulos[0])
    else:
        modelo = modelo_vector.RespuestaPgVector(contenido="",documento="ADICIONAL")
    print(modelo)
    return modelo

def pregunta_milvus_danec_ventas(pregunta:str):
    embeddings = OpenAIEmbeddings(
    model="text-embedding-3-large",
    openai_api_key="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"
    )

    milvus=Milvus(
    embeddings,
    collection_name="danec_ventas",
    connection_args={"host": "74.208.60.79", "port": "19530"},
)
    contenido=""
    titulos=[]
    query = pregunta
    docs=milvus.similarity_search_with_score(query,k=8)
    for documento, puntaje in docs:
        if puntaje>0.1:
            contenido+=documento.page_content+"\n\n"
            titulos.append(documento.metadata["namespace"])
    if len(titulos)>0:
        modelo = modelo_vector.RespuestaPgVector(contenido=contenido,documento=titulos[0])
    else:
        modelo = modelo_vector.RespuestaPgVector(contenido="",documento="ADICIONAL")
    print(modelo)
    return modelo

def pregunta_milvus_vcisne(pregunta:str):
    embeddings = OpenAIEmbeddings(
    model="text-embedding-3-large",
    openai_api_key="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"
    )

    milvus=Milvus(
    embeddings,
    collection_name="virgen_cisne",
    connection_args={"host": "74.208.60.79", "port": "19530"},
)
    contenido=""
    titulos=[]
    query = pregunta
    docs=milvus.similarity_search_with_score(query,k=5)
    for documento, puntaje in docs:
        if puntaje>0.1:
            contenido+=documento.page_content+"\n\n"
            titulos.append(documento.metadata["namespace"])
    if len(titulos)>0:
        modelo = modelo_vector.RespuestaPgVector(contenido=contenido,documento=titulos[0])
    else:
        modelo = modelo_vector.RespuestaPgVector(contenido="",documento="ADICIONAL")
    print(modelo)
    return modelo

def pregunta_milvus_academico(pregunta:str):
    embeddings = OpenAIEmbeddings(
    model="text-embedding-3-large",
    openai_api_key="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"
    )

    milvus=Milvus(
    embeddings,
    collection_name="academico",
    connection_args={"host": "74.208.60.79", "port": "19530"},
)
    contenido=""
    titulos=[]
    query = pregunta
    docs=milvus.similarity_search_with_score(query,k=5)
    for documento, puntaje in docs:
        if puntaje>0.1:
            contenido+=documento.page_content+"\n\n"
            titulos.append(documento.metadata["namespace"])
    if len(titulos)>0:
        modelo = modelo_vector.RespuestaPgVector(contenido=contenido,documento=titulos[0])
    else:
        modelo = modelo_vector.RespuestaPgVector(contenido="",documento="ADICIONAL")
    print(modelo)
    return modelo

def pregunta_coop_ambato(pregunta:str):
    embeddings = OpenAIEmbeddings(
    model="text-embedding-3-large",
    openai_api_key="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"
    )

    milvus=Milvus(
    embeddings,
    collection_name="coop_ambato",
    connection_args={"host": "74.208.60.79", "port": "19530"},
)
    contenido=""
    titulos=[]
    query = pregunta
    docs=milvus.similarity_search_with_score(query,k=5)
    for documento, puntaje in docs:
        if puntaje>0.1:
            contenido+=documento.page_content+"\n\n"
            titulos.append(documento.metadata["namespace"])
    if len(titulos)>0:
        modelo = modelo_vector.RespuestaPgVector(contenido=contenido,documento=titulos[0])
    else:
        modelo = modelo_vector.RespuestaPgVector(contenido="",documento="ADICIONAL")
    print(modelo)
    return modelo

def pregunta_coop_andalucia(pregunta:str):
    embeddings = OpenAIEmbeddings(
    model="text-embedding-3-large",
    openai_api_key="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"
    )

    milvus=Milvus(
    embeddings,
    collection_name="coop_andalucia",
    connection_args={"host": "74.249.12.122", "port": "19530"},
)
    contenido=""
    titulos=[]
    query = pregunta
    docs=milvus.similarity_search_with_score(query,k=5)
    for documento, puntaje in docs:
        if puntaje>0.1:
            contenido+=documento.page_content+"\n\n"
            titulos.append(documento.metadata["namespace"])
    if len(titulos)>0:
        modelo = modelo_vector.RespuestaPgVector(contenido=contenido,documento=titulos[0])
    else:
        modelo = modelo_vector.RespuestaPgVector(contenido="",documento="ADICIONAL")
    print(modelo)
    return modelo
