Spaces:
Runtime error
Runtime error
import gradio as gr | |
import openai | |
import unstructured | |
import plotly | |
import langchain | |
import tiktoken | |
import matplotlib | |
import pickle | |
from linkify_it import LinkifyIt | |
import numpy as np | |
import os, random | |
from pathlib import Path | |
import tiktoken | |
from getpass import getpass | |
from rich.markdown import Markdown | |
from langchain.chains.qa_with_sources import load_qa_with_sources_chain | |
import torch | |
import sys | |
import csv | |
from langchain_openai import OpenAIEmbeddings | |
from langchain_openai import ChatOpenAI | |
# Load the FAISS index from the .pkl file | |
with open("index.pkl", "rb") as f: | |
db_loaded = pickle.load(f) | |
def get_response_from_query(db, query, k=3): | |
docs = db.similarity_search(query, k=k) | |
docs_page_content = " ".join([d.page_content for d in docs]) | |
# llm = BardLLM() | |
llm = ChatOpenAI(model_name="gpt-3.5-turbo-16k",temperature=0) | |
prompt = PromptTemplate( | |
input_variables=["question", "docs"], | |
template=""" | |
A bot that is open to discussions about different cultural, philosophical and political exchanges. I will use do different analysis to the articles provided to me. Stay truthful and if you weren't provided any resources give your oppinion only. | |
Answer the following question: {question} | |
By searching the following articles: {docs} | |
Only use the factual information from the documents. Make sure to mention key phrases from the articles. | |
If you feel like you don't have enough information to answer the question, say "I don't know". | |
""", | |
) | |
chain = LLMChain(llm=llm, prompt=prompt) | |
response = chain.run(question=query, docs=docs_page_content,return_source_documents=True) | |
r_text = str(response) | |
##evaluation part | |
prompt_eval = PromptTemplate( | |
input_variables=["answer", "docs"], | |
template=""" | |
You job is to evaluate if the response to a given context is faithful. | |
for the following: {answer} | |
By searching the following article: {docs} | |
Give a reason why they are similar or not, start with a Yes or a No. | |
""", | |
) | |
chain_part_2 = LLMChain(llm=llm, prompt=prompt_eval) | |
evals = chain_part_2.run(answer=r_text, docs=docs_page_content) | |
return response,docs,evals | |
def greet(query): | |
answer,sources,evals = get_response_from_query(db,query,2) | |
return answer,sources,evals | |
examples = [ | |
["How to be happy"], | |
["Climate Change Challenges in Europe"], | |
["Philosophy in the world of Minimalism"], | |
["Hate Speech vs Freedom of Speech"], | |
["Articles by Noam Chomsky on US Politics"], | |
["The importance of values and reflection"] | |
] | |
demo = gr.Interface(fn=greet, title="cicero-semantic-search", inputs="text", | |
outputs=[gr.components.Textbox(lines=3, label="Response"), | |
gr.components.Textbox(lines=3, label="Source"), | |
gr.components.Textbox(lines=3, label="Evaluation")], | |
examples=examples) | |
demo.launch(share=True) | |