Skip to main content

A Python package for creating AI Assistants and AI Agents with Vectara

Project description

vectara-agentic

License Maintained

Twitter Discord

The idea of LLM-based agents is to use the LLM for building sophisticated AI assistants:

  • The LLM is used for reasoning and coming up with a game-plan for how to respond to the user query.
  • There are 1 or more "tools" provided to the agent. These tools can be used by the LLM to execute its plan.

vectara-agentic is a Python library that let's you develop powerful AI assistants with Vectara, using Agentic-RAG:

  • Based on LlamaIndex Agent framework, customized for use with Vectara.
  • Supports the ReAct or OpenAIAgent agent types.
  • Includes many tools out of the box (e.g. for finance, legal and other verticals).

Getting Started

Prerequisites

Install vectara-agentic

  • pip install vectara-agentic

Create your AI assistant

Creating an AI assistant with vectara-agentic involves the following:

Step 1: Create Vectara RAG tool

First, create an instance of the VectaraToolFactory class as follows:

vec_factory = VectaraToolFactory(vectara_api_key=os.environ['VECTARA_API_KEY'],
                                 vectara_customer_id=os.environ['VECTARA_CUSTOMER_ID'], 
                                 vectara_corpus_id=os.environ['VECTARA_CORPUS_ID'])

The Vectara tool factory has a useful helper function called create_rag_tool which automates the creation of a tool to query Vectara RAG.

For example if my Vectara corpus includes financial information from company 10K annual reports for multiple companies and years, I can use the following:

class QueryFinancialReportsArgs(BaseModel):
    query: str = Field(..., description="The user query. Must be a question about the company's financials, and should not include the company name, ticker or year.")
    year: int = Field(..., description=f"The year. an integer.")
    ticker: str = Field(..., description=f"The company ticker. Must be a valid ticket symbol.")
query_financial_reports = vec_factory.create_rag_tool(
    tool_name = "query_financial_reports",
    tool_description = """
    Given a company name and year, 
    returns a response (str) to a user query about the company's financials for that year.
    When using this tool, make sure to provide a valid company ticker and year. 
    Use this tool to get financial information one metric at a time.
    """,
    tool_args_schema = QueryFinancialReportsArgs,
    tool_filter_template = "doc.year = {year} and doc.ticker = '{ticker}'"
)

Note how QueryFinancialReportsArgs defines the arguments for my tool using pydantic's Field class. The tool_description as well as the description of each argument are important as they provide the LLM with the ability to understand how to use this tool in the most effective way. The tool_filter_template provides the template filtering expression the tool should use when calling Vectara.

You can of course create more than one Vectara tool; tools may point at different corpora or may have different parameters for search or generation.

Step 2: Create Other Tools, as needed

In addition to RAG tools, you can generate a lot of other types of tools the agent can use. These could be mathematical tools, tools that call other APIs to get more information, and much more.

vectara-agentic provides a few tools out of the box:

  1. Standard tools:
  • get_current_date: allows the agent to figure out which date it is.
  • summarize_text: a tool to summarize a long text into a shorter summary (uses LLM)
  • rephrase_text: a tool to rephrase a given text, given a set of rephrase instructions (uses LLM)
  1. Financial tools: a set of tools for financial analysis of public company data:
  • get_company_name: get company name given its ticker (uses Yahoo Finance)
  • calculate_return_on_equity, calculate_return_on_assets, calculate_debt_to_equity_ratio and calculate_ebitda

You can create your own tool directly from a Python function using the create_tool() method:

def mult_func(x, y):
    return x*y

mult_tool = ToolsFactory().create_tool(mult_func)
  1. More tools to be coming soon

Step 3: Create your agent

agent = Agent(
    tools = tools,
    topic = topic_of_expertise
    custom_instructions = financial_bot_instructions,
    update_func = update_func
)
  • tools is the list of tools you want to provide to the agent
  • topic is a string that defines the expertise you want the agent to specialize in.
  • custom_instructions is an optional string that defines special instructions to the agent
  • update_func is a callback function that will be called by the agent as it performs its task The inputs to this function you provide are status_type of type AgentStatusType and msg which is a string.

Note that the Agent type (OPENAI or REACT) is defined as an environment variables VECTARA_AGENTIC_AGENT_TYPE.

For example, for a financial agent we can use:

topic = "10-K financial reports",

financial_bot_instructions = """
    - You are a helpful financial assistant in conversation with a user. Use your financial expertise when crafting a query to the tool, to ensure you get the most accurate information.
    - You can answer questions, provide insights, or summarize any information from financial reports.
    - A user may refer to a company's ticker instead of its full name - consider those the same when a user is asking about a company.
    - When calculating a financial metric, make sure you have all the information from tools to complete the calculation.
    - In many cases you may need to query tools on each sub-metric separately before computing the final metric.
    - When using a tool to obtain financial data, consider the fact that information for a certain year may be reported in the the following year's report.
    - Report financial data in a consistent manner. For example if you report revenue in thousands, always report revenue in thousands.
    """

Configuration

vectara-agentic is using environment variables for a few global configuration

  • VECTARA_AGENTIC_AGENT_TYPE: type of agent - REACT or OPENAI (default OPENAI)
  • VECTARA_AGENTIC_MAIN_LLM_PROVIDER: agent LLM provider OPENAI, ANTHROPIC, TOGETHER, GROQ, or FIREWORKS (default OPENAI)
  • VECTARA_AGENTIC_MAIN_MODEL_NAME: agent model name (default depends on provider)
  • VECTARA_AGENTIC_TOOL_LLM_PROVIDER: tool LLM provider OPENAI, ANTHROPIC, TOGETHER, GROQ, or FIREWORKS (default OPENAI)
  • VECTARA_AGENTIC_TOOL_MODEL_NAME: tool model name (default depends on provider)

Examples

We have created a few example AI assistants that you can look at for inspiration and code examples:

Author

👤 Vectara

🤝 Contributing

Contributions, issues and feature requests are welcome and appreciated!
Feel free to check issues page. You can also take a look at the contributing guide.

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2024 Vectara.
This project is Apache 2.0 licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vectara_agentic-0.1.4.tar.gz (24.3 kB view details)

Uploaded Source

Built Distribution

vectara_agentic-0.1.4-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file vectara_agentic-0.1.4.tar.gz.

File metadata

  • Download URL: vectara_agentic-0.1.4.tar.gz
  • Upload date:
  • Size: 24.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for vectara_agentic-0.1.4.tar.gz
Algorithm Hash digest
SHA256 05c922cee366ea52c286317b026883bfa9f3e2bda5326ee01d23605391c00266
MD5 81f781cef68e79cff51b3cae4c4fb566
BLAKE2b-256 ab5e1f3637a823b2c09b5b559b3ec2a5122d902cc44d924f1276962b14ff91c9

See more details on using hashes here.

File details

Details for the file vectara_agentic-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for vectara_agentic-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cf0bb0cdecde86cbe731a612b6288098dd4400c2764f85d821c581809ff45bc3
MD5 923f1264d3b3e91904987fce47e85a51
BLAKE2b-256 8dd321e4b4f23475f5326c68b1a052db7832a2a400a71884edaa57143076569a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page