import streamlit as st import requests import json from langchain.vectorstores import Vectara from sentence_transformers import CrossEncoder # Input your API keys vectara_customer_id = "3939498282" vectara_corpus_id = 2 vectara_api_key = 'zqt_6s_5KqwCCxK5tosYGbpSie8n2-hO7LdlxBWUBA' # Initialize Vectara vectara_instance = Vectara( vectara_customer_id='3939498282', vectara_corpus_id=2, vectara_api_key='zqt_Y3kD9bueJq3QO5t_FISVQLmgTWMDhzgMgK9Isw', ) # Model initialization model = CrossEncoder('vectara/hallucination_evaluation_model') # Streamlit app st.title('RAG-Based App') # Input message from the user message = st.text_input('Enter your message') # Button to trigger the processing if st.button('Process'): # Processing logic corpus_key = [ { "customerId": vectara_customer_id, "corpusId": vectara_corpus_id, "lexicalInterpolationConfig": {"lambda": 0.025}, } ] data = { "query": [ { "query": message, "start": 0, "numResults": 10, "contextConfig": { "sentencesBefore": 2, "sentencesAfter": 2, }, "corpusKey": corpus_key, "summary": [ { "responseLang": "eng", "maxSummarizedResults": 5, } ] } ] } headers = { "x-api-key": vectara_api_key, "customer-id": vectara_customer_id, "Content-Type": "application/json", } response = requests.post( headers=headers, url="https://api.vectara.io/v1/query", data=json.dumps(data), ) if response.status_code != 200: st.error("Query failed") else: result = response.json() responses = result["responseSet"][0]["response"] summary = result["responseSet"][0]["summary"][0]["text"] res = [[r['text'], r['score']] for r in responses] texts = [r[0] for r in res[:5]] scores = [model.predict([text, summary]) for text in texts] text_elements = [] docs = vectara_instance.similarity_search(message) for source_idx, source_doc in enumerate(docs[:5]): source_name = f"Source {source_idx + 1}" text_elements.append(source_doc.page_content) ans = f"{summary}\n HHEM Scores: {scores}" st.text(ans) st.text("Sources:") for text in text_elements: st.text(text)