Ago / app.py
micbon's picture
Update app.py
251bdb9 verified
# import required functions, classes
from autollm import AutoQueryEngine
from autollm.utils.document_reading import read_github_repo_as_documents, read_files_as_documents
import os
import gradio as gr
import nest_asyncio
"""- Set your OpenAI API key in order to use default gpt-3.5-turbo model:"""
os.environ["OPENAI_API_KEY"] = "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"
"""## 1. Read Files as Documents
- Reading from a Github repo:
"""
git_repo_url = "https://github.com/michelebon/Ago.git"
relative_folder_path = "docs" # relative path from the repo root to the folder containing documents
required_exts = [".pdf"] # optional, only read files with these extensions
documents = read_github_repo_as_documents(git_repo_url=git_repo_url, relative_folder_path=relative_folder_path, required_exts=required_exts)
"""Solve the loop problem"""
query_engine = AutoQueryEngine.from_defaults
nest_asyncio.apply()
app = AutoQueryEngine.from_defaults
# llm params
llm_model = "gpt-4"
llm_max_tokens = 512
llm_temperature = 0.1
# service_context_params
system_prompt = """
You are an expert in antimicrobial resistance, specifically tailored to provide information exclusively from the 'LIBRO BIANCO SULL’ANTIMICROBICO RESISTENZA E LE INFEZIONI CORRELATE ALL’ASSISTENZA IN ITALIA - Una sfida improrogabile.'
Its primary role is to interpret, explain, and discuss content within this document.
You will not provide information from other sources; if a query is outside the scope of the document, it will explicitly state that the information is not found in the document and refrain from giving an answer.
This specialized focus ensures accurate and specific responses related to antimicrobial resistance and related infections in the Italian healthcare context, as detailed in the document.
If a query is unclear, you will ask for clarification to provide the most accurate and relevant response possible based on the document's content.
You will communicate in a scientific yet easy-to-understand tone, making complex information accessible without compromising scientific accuracy.
"""
query_wrapper_prompt = '''
The document information is below.
---------------------
{context_str}
---------------------
Using the document information and mostly relying on it,
answer the query.
Query: {query_str}
Answer:
'''
enable_cost_calculator = True
embed_model = "text-embedding-ada-002" # ["default", "local"]
chunk_size = 512
context_window = 4096
# vector store params
vector_store_type = "LanceDBVectorStore"
lancedb_uri = "./.lancedb"
lancedb_table_name = "vectors"
enable_metadata_extraction = False
# query engine params
similarity_top_k = 3
query_engine = AutoQueryEngine.from_defaults(
documents=documents,
llm_model=llm_model,
llm_max_tokens=llm_max_tokens,
llm_temperature=llm_temperature,
system_prompt=system_prompt,
query_wrapper_prompt=query_wrapper_prompt,
enable_cost_calculator=enable_cost_calculator,
embed_model=embed_model,
chunk_size=chunk_size,
context_window=context_window,
vector_store_type=vector_store_type,
lancedb_uri=lancedb_uri,
lancedb_table_name=lancedb_table_name,
enable_metadata_extraction=enable_metadata_extraction,
similarity_top_k=similarity_top_k
)
def greet(query):
return query_engine.query(query).response
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()