v0.2 - It is RAG Time!

v0.2 - It is RAG Time!

A new stable release of OpenGPA is out, including two new major features and a few bug fixes and UI improvements that I'll detail in the post below.

  1. A simple RAG feature includes a document store, embeddings, vector database, and a new RAG Agent for retrieval.
  2. An email action that can be used for the agent to share and coordinate with the outside world.
  3. A series of UI improvements including dynamic task title generation and improved visualization of intermediate results.

Native Retrieval Augmented Generation

You can now upload documents (both text and PDF) in the Document section. These will be automatically chunked in smaller parts, transformed into embeddings, and indexed in a vector database. The UI allows you to visualize the ingestion progress and to look at the detailed chunks once ingested.

A new action rag_search is introduced, backed by a separate RAG Agent, whose purpose is to perform the database search, parse the various chunks, and attempt to answer the question asked by the main agent. When the main agent uses this action, the result can be inspected in the conversation UI for detailed references to the chunks supporting the statements.

RAG Search result with references to the chunks used to answer the question

The email action

As a first step in connecting the Agent to the outside world, I've introduced a new send_email action. This action is backed by a secondary 'assistant' agent whose function is to write the email based on input from the main agent. The assistant agent has a configurable agent name, email address etc... that it can use within the email being written.

To use the email action you need to enable it and provide a configuration in your application.properties following this example:

opengpa.actions.email.enabled=true
opengpa.actions.email.smtp-host=ssl0.ovh.net
opengpa.actions.email.smtp-port=587
opengpa.actions.email.username=<...>
opengpa.actions.email.password=<...>
opengpa.actions.email.from-address=<...>
opengpa.actions.email.from-name=<...>

A few UI updates

  • I've fixed some bugs in the orchestration layer that were causing the last user statement to have too much weight in the conversation.
  • The Task title is now dynamically generated through a separate call to an LLM to summarize the conversation. It keeps evolving as the conversation progresses.
  • The step visualization has improved, putting the reasoning more prominently and allowing the user to expand and look at the details behind each action.

Use case and explorers needed!

As I keep experimenting with OpenGPA and Agentic in general, I'm also looking for use cases that this little tool could fulfill, beyond the standard chatbot and generative use cases that the major players are already doing really well.

I'm also looking for privacy-focused companies looking to have their own internal assistant hosted in a private cloud and leverage internal documents in a safe a private manner, to avoid leaking internal conversations to outsiders.

If you are willing to explore how agentic can benefit your company, please try out OpenGPA and reach out for further integration and customisation!