Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions build/agent_playbook_docs/test_reference.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,9 @@ def test_proposal_diagram_qualifies_default_retention_windows():
diagram = ElementTree.parse(
ROOT / "static/images/ai/context-engine/agent-playbook-proposals.svg"
)
labels = [node.text for node in diagram.iter("{http://www.w3.org/2000/svg}text")]
assert labels.count("30 DAYS BY DEFAULT") == 2
assert not any("60 DAYS" in label for label in labels)
labels = [(node.text or "").casefold() for node in diagram.iter("{http://www.w3.org/2000/svg}text")]
assert labels.count("30 days by default") == 2
assert not any("60 days" in label for label in labels)


def test_optional_cleanup_is_separate_from_full_program_copies():
Expand Down
8 changes: 8 additions & 0 deletions content/operate/iris/agent-playbook/create-playbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ A playbook is a registry of the frequently asked questions (FAQs) and skills you

The playbook stores its data in a Redis Cloud database. Use one of your databases, or let the console create a free database when you create the playbook. To create one yourself, see [Create a database](/content/operate/rc/databases/create-database/_index.md).

An existing database must be active and have:

- An enabled [default user](/content/operate/rc/security/access-control/data-access-control/default-user.md) with a password.
- A public endpoint that Agent Playbooks can reach.
- Support for the JavaScript Object Notation (JSON) data type and Redis Query Engine, with Search version 2.10 or later.

The console lists only databases that meet these requirements.

If the database has a Classless Inter-Domain Routing (CIDR) allow list that blocks Agent Playbooks, you can't create the playbook with it. The console lists the Internet Protocol (IP) addresses to add. Add them under **Security** in the database's settings.

## Create a playbook
Expand Down
18 changes: 12 additions & 6 deletions content/operate/iris/agent-playbook/manage-playbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ A playbook's page has the following tabs:

- [**Configuration**](#configuration-tab): the playbook's settings, credentials, extraction, and retrieval policy.
- [**Registry**](#registry-tab): the playbook's frequently asked questions (FAQs) and skills, and their versions.
- [**Proposals**](#proposals-tab): suggested FAQs waiting for review.
- [**Proposals**](#proposals-tab): suggested FAQs and skills waiting for review.
- [**Playground**](#playground-tab): a test of what an agent retrieves for a query.

If your role can't read the playbook's content, you see only the **Configuration** tab.
Expand Down Expand Up @@ -85,15 +85,21 @@ You can also delete an entry from its page, in the **Danger zone**.

## Proposals tab

The **Proposals** tab supports reviewing suggested FAQs from agents with `propose` access or from [automatic FAQ extraction](#automatic-faq-extraction). To submit and review skill proposals through the API, see [Review skill proposals](/content/develop/ai/context-engine/agent-playbooks/proposals.md#review-skill-proposals).
The **Proposals** tab lists FAQ and skill proposals from agents with `propose` access. [Automatic FAQ extraction](#automatic-faq-extraction) adds FAQ proposals only.

The **Inbox** lists open proposals, with how much evidence supports each one and when to review it by. Select a proposal to review its candidate question and answer, and its **Supporting evidence**. Then:
The **Inbox** lists open proposals, with how much evidence supports each one and when to review it by. Select a proposal to review its candidate and **Supporting evidence**.

- Select **Accept as draft FAQ** to create an unpublished FAQ version from the candidate. Review it, then [publish it](#publish-a-version) when it's ready.
- Select **Edit candidate** to change the question, answer, alias, intents, or attributes before you accept it.
For a FAQ, review the question and answer. For a skill, review its name, description, and **Instructions**. Use **Download** under **Resources** to inspect its supporting files. The console verifies that downloaded files match the reviewed proposal.

After review:

- Select **Accept as draft FAQ** or **Accept as draft Skill** to create an unpublished version from the candidate. Review it, then [publish it](#publish-a-version) when it's ready.
- For a FAQ, select **Edit candidate** to change the question, answer, alias, intents, or attributes before you accept it.
- Select **Move to trash** to dismiss it.

More evidence means more observations, not greater accuracy. Check the candidate against its sources before you accept and publish it. See [Review proposals](/content/develop/ai/context-engine/agent-playbooks/proposals.md) for more.
If the proposal changes during review, select **Reload proposal** and review the updated candidate and files before accepting it.

More evidence means more observations, not greater accuracy. Check the candidate against its sources before you accept and publish it. For review through the API, see [Review proposals](/content/develop/ai/context-engine/agent-playbooks/proposals.md).

The **Trash** lists dismissed proposals until they're purged. Select **Restore to inbox** to review one again, or **Purge proposal** to delete it permanently.

Expand Down
22 changes: 11 additions & 11 deletions layouts/partials/header.html
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<header
class="sticky top-0 h-[70px] z-50 w-full border-b border-white border-opacity-30 bg-redis-ink-900 text-white font-mono text-[15px] flex justify-center">
{{/* {{ partial "banner.html" . }} */}}
<div class="flex h-[70px] px-4 lg:pl-11 lg:pr-0 items-center self-center grow">
<div class="flex h-[70px] px-4 xl:pl-11 xl:pr-0 items-center self-center grow">
<a class="relative text-redis-red-500 w-[82px] -mt-[5px] mr-[4px]" href="https://redis.io/">
{{ partial "icons/logo-script.html" }}
</a>
<div class="h-full flex items-center mx-4 grow">
<div class="hidden lg:flex flex-row h-full items-center">
<div class="hidden xl:flex flex-row h-full items-center">
<div class="group h-full px-2 xl:px-[14px]">
<div class="flex flex-row h-full items-center cursor-pointer w-[22ch] justify-between">
<div class="relative flex rounded-[20px] border border-white border-opacity-50 px-4 pl-9 py-1 transition-all duration-500 group-hover:border-[#ff4438]">
Expand All @@ -27,38 +27,38 @@
<span class="inline-block ml-2 mt-1 text-redis-red-500 -rotate-90">{{ partial "icons/caret.html" }}</span>
</a>
</div>
<a class="hidden lg:flex group flex-row items-center px-4" href="{{ relURL "develop/tools/" }}"><span
<a class="hidden xl:flex group flex-row items-center px-4" href="{{ relURL "develop/tools/" }}"><span
class="group-hover:font-bold">Tools</span><span class="inline-block ml-2 mt-1 text-redis-red-500 -rotate-90">{{ partial "icons/caret.html" }}</span></a>
<a class="hidden lg:flex group flex-row items-center px-4" href="{{ relURL "operate/oss_and_stack/" }}"><span
<a class="hidden xl:flex group flex-row items-center px-4" href="{{ relURL "operate/oss_and_stack/" }}"><span
class="group-hover:font-bold">Community</span></a>
<a class="hidden lg:flex group flex-row items-center px-4" href="https://redis.io/docs/"><span
<a class="hidden xl:flex group flex-row items-center px-4" href="https://redis.io/docs/"><span
class="font-bold">Docs</span></a>
</div>

<div class="h-full flex gap-[18px] xl:gap-7 items-center text-center">
<button id="search-button" type="button" class="hidden lg:flex items-center gap-2 px-6 py-2 bg-[#163341] text-white rounded-full border border-white border-opacity-30 hover:bg-[#1a3a4a] hover:border-opacity-50 transition-colors">
<button id="search-button" type="button" class="hidden xl:flex items-center gap-2 px-6 py-2 bg-[#163341] text-white rounded-full border border-white border-opacity-30 hover:bg-[#1a3a4a] hover:border-opacity-50 transition-colors">
{{ partial "icons/search.html" }}
Search
</button>
<a class="hidden lg:block py-1 transition-colors hover:text-redis-red-500"
<a class="hidden xl:block py-1 transition-colors hover:text-redis-red-500"
href="https://cloud.redis.io/">Login</a>

<a class="hidden lg:inline-flex items-center justify-center px-6 py-2 mr-4 border-2 border-redis-red-500 text-white rounded-md hover:bg-redis-red-500 transition-colors"
<a class="hidden xl:inline-flex items-center justify-center px-6 py-2 mr-4 border-2 border-redis-red-500 text-white rounded-md hover:bg-redis-red-500 transition-colors"
href="https://redis.io/try-free/">Sign up</a>
<button id="search-button-mobile" type="button" class="lg:hidden p-1 mt-1 transition-colors hover:text-redis-red-500">
<button id="search-button-mobile" type="button" class="xl:hidden p-1 mt-1 transition-colors hover:text-redis-red-500">
<span class="sr-only">Open search</span>
{{ partial "icons/search.html" }}
</button>
<button data-menu-toggle aria-expanded="false" type="button"
class="menu-toggle lg:hidden p-1 mt-1 transition-colors hover:text-redis-red-500">
class="menu-toggle xl:hidden p-1 mt-1 transition-colors hover:text-redis-red-500">
<span class="sr-only">Open main menu</span>
{{ partial "icons/hamburger.html" }}
</button>
</div>

</div>

<nav data-menu
<nav data-menu data-menu-container
class="hidden absolute left-0 top-[70px] h-[calc(100vh-70px)] w-full overflow-y-auto bg-redis-ink-900 pb-12 xl:hidden">
<ul class="space-y-4 bg-redis-ink-900 p-4">
<li class="border-b border-b-white border-opacity-30 py-4 last:border-none">
Expand Down
Loading