DigitalBank / agent.py
joao-vectara's picture
Update agent.py
5fc1d81 verified
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