Spaces:
Sleeping
Sleeping
import pandas as pd | |
import requests | |
from pydantic import Field, BaseModel | |
from omegaconf import OmegaConf | |
from vectara_agentic.agent import Agent | |
from vectara_agentic.tools import ToolsFactory, VectaraToolFactory | |
def create_assistant_tools(cfg): | |
class QueryDocsArgs(BaseModel): | |
query: str = Field(..., description="The user query, always in the form of a question", | |
examples=["Based on uploaded documents, what are the top four challenges of the Fintech sector in Saudi Arabia? list them in bullet points."]) | |
vec_factory = VectaraToolFactory(vectara_api_key=cfg.api_key, | |
vectara_corpus_key=cfg.corpus_key) | |
summarizer = 'mockingbird-1.0-2024-07-16' | |
ask_docs = vec_factory.create_rag_tool( | |
tool_name = "ask_docs", | |
tool_description = """ | |
Responds to an user question about a particular analysis, based on the documentation provide. | |
""", | |
tool_args_schema = QueryDocsArgs, | |
reranker = "chain", rerank_k = 100, | |
rerank_chain = [ | |
{ | |
"type": "multilingual_reranker_v1", | |
# "cutoff": 0.2 | |
}, | |
{ | |
"type": "mmr", | |
"diversity_bias": 0.2, | |
"limit": 50 | |
} | |
], | |
n_sentences_before = 2, n_sentences_after = 2, lambda_val = 0.005, | |
summary_num_results = 15, | |
vectara_summarizer = summarizer, | |
include_citations = True, | |
#vectara_prompt_text=prompt, | |
save_history = True, | |
verbose=False | |
) | |
tools_factory = ToolsFactory() | |
return ( | |
tools_factory.standard_tools() + | |
[ask_docs] | |
) | |
def initialize_agent(_cfg, agent_progress_callback=None): | |
stc_bank_bot_instructions = """ | |
- Call the the ask_docs tool to retrieve the information to answer the user query. | |
- If the question has an 'Excel' or 'excel' word only fetch for the documents with 'type_file' equals to 'excel'. | |
- Always print the title of the References | |
""" | |
agent = Agent( | |
tools=create_assistant_tools(_cfg), | |
topic="STC Bank questions", | |
custom_instructions=stc_bank_bot_instructions, | |
agent_progress_callback=agent_progress_callback, | |
) | |
agent.report() | |
return agent |