Spaces:
Runtime error
Runtime error
File size: 3,033 Bytes
c630198 0f7b3d5 c82e1df 07b8207 c630198 c82e1df c630198 c82e1df c630198 |
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 |
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)
|