Skip to content

DEV: add Knowledge Assistant (RAG) agent type to agent builder#3376

Open
mich-elle-luna wants to merge 6 commits into
mainfrom
agent-builder-rag
Open

DEV: add Knowledge Assistant (RAG) agent type to agent builder#3376
mich-elle-luna wants to merge 6 commits into
mainfrom
agent-builder-rag

Conversation

@mich-elle-luna

@mich-elle-luna mich-elle-luna commented May 27, 2026

Copy link
Copy Markdown
Collaborator

Adds a third agent type — Knowledge Assistant — to the interactive agent builder, alongside the existing Recommendation Engine and Conversational Assistant. Includes Python and Node.js templates with Redis-native hybrid retrieval, semantic caching, session memory, and citations.

  • Python template: single redis-py client (decode_responses=False), redisvl for index creation only, FT.SEARCH hybrid query with vector-only fallback, load_directory() helper, idempotent sample doc ingestion
  • Node.js template: node-redis v4, same hybrid search pattern, loadDirectory() helper, ft.info() guard to skip re-ingestion on restart
  • agent-builder.js: adds rag type to CONFIG, enables JavaScript alongside Python, fixes root-relative template URL, adds third suggestion chip
  • agent-builder.html: adds Knowledge Assistant chip to initial message
  • _index.md: updated to mention three agent types and JS support

Note

Low Risk
Docs-site and static template changes only; no production auth or data-path changes beyond new example agent code for users to run locally.

Overview
Adds a Knowledge Assistant (RAG) as a third agent type in the interactive builder, with docs and UI updated to list three agent types and JavaScript (Node.js) alongside Python as supported output languages.

The builder flow now recognizes rag in CONFIG, shows a Knowledge Assistant suggestion chip, and treats JavaScript as a first-class choice (not Python-only). Template loading uses a Hugo-injected AGENT_TEMPLATE_BASE so fetches work with site base URLs.

New Python and Node.js rag_agent templates generate a full Knowledge Assistant: document chunking/ingestion, RediSearch hybrid retrieval (text filter + KNN with vector fallback), TTL semantic cache, session history in Redis Lists, and cited answers. Sample docs ingest only when the index is empty on startup.

Reviewed by Cursor Bugbot for commit c469ea6. Bugbot is set up for automated code reviews on this repo. Configure here.

Adds a third agent type — Knowledge Assistant — to the interactive agent
builder, alongside the existing Recommendation Engine and Conversational
Assistant. Includes Python and Node.js templates with Redis-native hybrid
retrieval, semantic caching, session memory, and citations.

- Python template: single redis-py client (decode_responses=False), redisvl
  for index creation only, FT.SEARCH hybrid query with vector-only fallback,
  load_directory() helper, idempotent sample doc ingestion
- Node.js template: node-redis v4, same hybrid search pattern, loadDirectory()
  helper, ft.info() guard to skip re-ingestion on restart
- agent-builder.js: adds rag type to CONFIG, enables JavaScript alongside
  Python, fixes root-relative template URL, adds third suggestion chip
- agent-builder.html: adds Knowledge Assistant chip to initial message
- _index.md: updated to mention three agent types and JS support

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@mich-elle-luna mich-elle-luna requested a review from a team May 27, 2026 21:44
@github-actions

Copy link
Copy Markdown
Contributor

@jit-ci

jit-ci Bot commented May 27, 2026

Copy link
Copy Markdown

🛡️ Jit Security Scan Results

CRITICAL HIGH MEDIUM

✅ No security findings were detected in this PR


Security scan by Jit

Comment thread static/code/agent-templates/python/rag_agent.py Outdated

@dwdougherty dwdougherty left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The complete example isn't displayed and it isn't downloadable or available for cut-and-paste. This kind of rings a bell - like we had this problem once before during initial development. 🤷🏻‍♂️

@dwdougherty dwdougherty requested a review from a team May 28, 2026 14:27
Hardcoded /code/agent-templates/ broke on staging when the site is
served from a subdirectory. Hugo's relURL now injects the correct base
path as window.AGENT_TEMPLATE_BASE so the XHR resolves relative to
wherever the site is deployed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@dwdougherty dwdougherty left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RAG example looks to be complete for both Python and JavaScript. But the other two show incomplete JavaScript code. I'm seeing these kinds of errors in the Chrome debugger's console:

Template file not found: /docs/staging/agent-builder-rag/code/agent-templates/javascript/recommendation_agent.js (404)

So what the JavaScript is showing is the default code that lives somewhere (in the static/js/agent-builder.js file maybe?).

@mich-elle-luna

Copy link
Copy Markdown
Collaborator Author

ah thanks, those are the new templates that are in my other PR I think

- Fix semantic cache never firing: _check_cache now reads response,
  citations, and distance directly from the FT result doc instead of
  routing through _decode_doc which discarded those fields
- Add separate embedder client (EMBEDDING_API_KEY / EMBEDDING_API_BASE_URL)
  so chat completions and embeddings can use different providers; defaults
  to the LLM values so OpenAI and Ollama users need no extra config;
  Anthropic users can point embeddings at any OpenAI-compatible endpoint

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment thread static/js/agent-builder.js
require('dotenv').config() was missing, causing LLM_API_KEY to not
be found when running with a .env file. Also adds dotenv to the
install dependencies comment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@CLAassistant

CLAassistant commented Jun 16, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

Comment thread static/code/agent-templates/python/rag_agent.py Outdated
@mich-elle-luna mich-elle-luna requested a review from a team June 16, 2026 23:05
@mich-elle-luna

Copy link
Copy Markdown
Collaborator Author

I tested both of these locally to make sure they work as well.

@andy-stark-redis

Copy link
Copy Markdown
Contributor

@mich-elle-luna Visually OK as far as I can tell. Still a couple of Bugbot issues, though, and the Claude-Codex shuffle is worth a go, if you haven't already done it.

FT.INFO returns bytes keys when decode_responses=False, so
index_info.get('num_docs') always returned None and the guard
treated the index as empty on every startup. Fall back to the
bytes key so re-ingestion is correctly skipped.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d5be365. Configure here.

Comment thread static/code/agent-templates/javascript/rag_agent.js Outdated
node-redis returns num_docs (snake_case), not numDocs. Fall back to
both keys and guard against NaN so sample docs are never skipped on
a genuinely empty index.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants