Spaces:
Paused
Paused
File size: 3,249 Bytes
6855b1e 8922c23 6855b1e 5845cbf 428be9a 6855b1e 5845cbf a8c00ab 5845cbf 6855b1e db2e7e4 34e4e96 6855b1e e0657ee 6855b1e a8c00ab 6855b1e 428be9a 6855b1e 428be9a 6855b1e 428be9a 6855b1e 3152165 6855b1e de33d74 6855b1e 8922c23 6855b1e 39a05d7 f58ccf2 6855b1e d29bff5 |
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 |
import logging
import os
from time import asctime
import gradio as gr
from llama_index.core import Document, VectorStoreIndex
from generate_response import generate_chat_response_with_history, set_llm, is_search_query, \
generate_chat_response_with_history_rag_return_response, google_question
from read_write_index import read_write_index
from web_search import search
logger = logging.getLogger("agent_logger")
sourced = False
query = False
rag_similarity = False
def google_search_chat(message, history):
gquestion = google_question(message, history)
if is_search_query(gquestion):
search_results = search(message, gquestion)
print(f'Search results returned: {len(search_results)}')
relevant_content = ""
for result in search_results:
relevant_content = relevant_content + "\n" + ''.join(result['text'])
print(f'Relevant content char length: {len(relevant_content)}')
if relevant_content != "":
documents = [Document(text=relevant_content)]
index = VectorStoreIndex.from_documents(documents)
print('Search results vectorized...')
response = generate_chat_response_with_history_rag_return_response(index, message, history)
else:
print(f'Assistant Response: Sorry, no search results found, trying with offline resources.')
index = read_write_index(path='storage_search/')
response = generate_chat_response_with_history_rag_return_response(index, message, history)
response_text = []
string_output = ""
for text in response.response_gen:
response_text.append(text)
string_output = ''.join(response_text)
yield string_output
print(f'Assistant Response: {string_output}')
else:
yield from generate_chat_response_with_history(message, history)
if __name__ == '__main__':
logging.root.setLevel(logging.INFO)
filehandler = logging.FileHandler(f'agent_log_{asctime().replace(" ", "").lower().replace(":", "")}.log',
'a')
formatter = logging.Formatter('%(asctime)-15s::%(levelname)s::%(filename)s::%(funcName)s::%(lineno)d::%(message)s')
filehandler.setFormatter(formatter)
logger = logging.getLogger("agent_logger")
for hdlr in logger.handlers[:]: # remove the existing file handlers
if isinstance(hdlr, logging.FileHandler):
logger.removeHandler(hdlr)
logger.addHandler(filehandler) # set the new handler
logger.setLevel(logging.INFO)
api_key = os.getenv('gpt_api_key')
# GPT - 4 Turbo. The latest GPT - 4 model intended to reduce cases of “laziness” where the model doesn’t complete
# a task. Returns a maximum of 4,096 output tokens. Link:
# https://openai.com/blog/new-embedding-models-and-api-updates
set_llm(key=api_key, model="gpt-4-0125-preview", temperature=0)
print("Launching Gradio ChatInterface for searchbot...")
demo = gr.ChatInterface(fn=google_search_chat,
title="Search Assistant", retry_btn=None, undo_btn=None, clear_btn=None,
theme="soft")
demo.launch()
# auth=('convo', 'session2024')
|