Spaces:
Sleeping
Sleeping
File size: 3,164 Bytes
b928387 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
import gradio as gr
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnableLambda, RunnablePassthrough
# from langchain_community.llms import Together
import os
from dotenv import load_dotenv
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceBgeEmbeddings
from langfuse.callback import CallbackHandler
from agentWeb import obtener_wikipedia_inform
from agentNews import obtener_noticias_baloncesto
# Carga las variables de entorno desde el archivoc .env
load_dotenv()
TOGETHER_API_KEY = os.environ["TOGETHER_API_KEY"]
LANGFUSE_PUBLIC_KEY = os.environ["LANGFUSE_PUBLIC_KEY"]
LANGFUSE_SECRET_KEY = os.environ["LANGFUSE_SECRET_KEY"]
handler = CallbackHandler(
public_key=LANGFUSE_PUBLIC_KEY,
secret_key=LANGFUSE_SECRET_KEY,
)
model = ChatOpenAI(
model="mistralai/Mixtral-8x7B-Instruct-v0.1",
temperature=0,
max_tokens=1024,
openai_api_key=TOGETHER_API_KEY,
base_url="https://api.together.xyz/",
callbacks=[handler],
)
embeddings = HuggingFaceBgeEmbeddings(
model_name="BAAI/bge-large-en",
model_kwargs={"device": "cpu"},
encode_kwargs={"normalize_embeddings": False},
)
load_vector_store = Chroma(persist_directory="stores", embedding_function=embeddings)
retriever = load_vector_store.as_retriever(search_kwargs={"k": 1})
# Provide a template following the LLM's original chat template.
template = """Utiliza la siguiente informaci贸n para responder a la pregunta del usuario.
Si no sabes la respuesta, di simplemente que no la sabes, no intentes inventarte una respuesta.
Contexto: {context}
Pregunta: {question}
Solo si el usuario te pide "Busca en Wikipedia: " ejecuta el siguiente c贸digo {BuscaWiki}, si no omite este paso.
Solo si el usuario te pide "脷ltimas noticias" ejecuta el siguiente c贸digo {BuscaNews}, si no omite este paso.
Si lo ejecutas sin que el usuario te lo pida, es posible que varias familias se mueran de hambre.
Devuelve s贸lo la respuesta 煤til que aparece a continuaci贸n y nada m谩s.
Responde siempre en castellano.
Respuesta 煤til:"""
prompt = ChatPromptTemplate.from_template(template)
chain = (
{
"context": retriever,
"question": RunnablePassthrough(),
"BuscaWiki": RunnableLambda(obtener_wikipedia_inform),
"BuscaNews": RunnableLambda(obtener_noticias_baloncesto),
}
| prompt
| model
| StrOutputParser()
)
def get_response(input):
query = input
output = chain.invoke(query)
return output
examples = [
["驴Sobre qu茅 trata el reglamento b谩sico del baloncesto?"],
["Busca en Wikipedia: Pau Gasol"],
["脷ltimas noticias"]
]
input = gr.Text(
label="Prompt",
show_label=False,
max_lines=1,
placeholder="Enter your prompt",
container=False,
)
iface = gr.Interface(
fn=get_response,
inputs=input,
outputs="text",
title="basketQuery",
description="This is a RAG implementation based on Mixtral.",
allow_flagging="never",
examples=examples,
)
iface.launch(share=True)
|