AI Agent (BytesRaw)
AI skills, retrieval-augmented generation and agents on top of ai_base_bytesraw
Agents that know your data
and act on your records.
AI Agent turns the raw provider connections of AI Base into something an Odoo business actually uses: agents that know your data, follow your instructions, and act on your records.
An agent is a persona (system prompt, tone, output format) plus three things you configure: skills — instruction packs and indexed documents the agent can search; tools — server actions it may call to read, create, update or navigate your Odoo data; and connections — an ordered failover chain of AI providers. Every tool call runs with the requesting user’s own access rights and is written to an audit log.
Knowledge That Stays Current
Upload Markdown, text, PDF or CSV documents to a skill and they are chunked, embedded and indexed in the background. At question time the agent retrieves only the passages that matter, so answers are grounded in your documents rather than in the model’s training data.
Tools Without Writing Code
Any Odoo server action can be exposed to AI with a checkbox. Update a record, create one, post a message, fire a webhook, open a view — pick the fields the AI may fill and the parameter schema builds itself. Destructive tools ask the user to confirm before anything happens.
The User’s Rights, Always
Tools execute as the human who asked, not as a superuser. Record rules, model access rights and field-level groups all apply unchanged, every call lands in the tool log, and knowledge passages are fenced as untrusted content so a poisoned document cannot issue instructions to the model.
Eleven capabilities.
One governance model.
Whatever a tool is underneath — a server action, a Python callable, a model method or a remote MCP tool — it is validated, user-bound, confirmation-gated and audited the same way.
Configurable Agents
Give an agent a name, avatar, system prompt, response style (Analytical, Balanced, Creative or a custom temperature), output format (Markdown, plain text, HTML or WhatsApp) and a token ceiling. Restrict it to user groups, hide it from surfaces where it makes no sense, and set a chat expiry so stale conversations are never silently reused.
Provider Failover with a Circuit Breaker
An agent points at an ordered list of connections, each with its own model. When a provider times out or fails, the agent moves down the list; a line that keeps failing is put on cooldown, and the last error shows right on the connection line. Dropped streams are retried on the same line before failing over.
Skills with Retrieval-Augmented Generation
A skill bundles instructions injected into the system prompt with a document library. Chunk size, overlap, top-K and a similarity threshold are tunable per skill, and Reindex Documents rebuilds the index on demand. Identical content is embedded only once, even when shared across skills.
Portable Vector Storage
Embeddings are stored in a JSON column so the module runs on any PostgreSQL, and additionally in a native vector column when the pgvector extension is installed, for fast cosine search. Without pgvector, retrieval falls back to a pure-Python scan — nothing to install, nothing to break.
Background Indexing
A scheduled job embeds pending chunks in batches, commits progress as it goes and re-arms itself while work remains, so indexing a large document library never blocks a user or times out a request. Per-chunk status and the exact error are visible on the skill.
A Library of Ready-Made Tools
More than twenty working tools out of the box: search records, get a record, read groups and aggregates, list model fields, create, update, duplicate and archive records, search the knowledge base, list and read attachments, export to CSV, calculate, convert currency, compute report measures, plus navigation tools that open a form, list, kanban, pivot or graph view on the user’s screen.
Confirmation Gates for Destructive Actions
Server actions that change data or reach the outside world are confirmation-gated by default. Instead of executing, the agent returns a proposal describing exactly what it intends to do; only after the user says yes does the tool run. A model can escalate a policy, never remove one.
Test Tool Before Trusting It
The Test Tool button runs a tool for real against a chosen record inside a savepoint that is always rolled back, then shows the exact string the model would have received. Author a tool, see what it returns, adjust the description — without touching production data.
Full Tool Audit Log
Every call is recorded: tool name, agent, user, target record, arguments sent, output returned and a status of Success, Invalid Arguments, Confirmation Required, Error or Access Denied. List, graph and pivot views group by tool, user, agent, status or day.
An Extensible Tool Registry
Beyond server actions, the registry holds Python callables and model-declared methods as first-class tools — and remote MCP tools once ai_mcp_bytesraw is installed. Whatever the kind, every tool goes through the same validation, user binding, confirmation gate and audit row.
Loop and Budget Guards
Each turn is bounded by an iteration cap and a wall-clock budget. A model that re-sends an identical tool call is warned, then stopped, so a confused agent cannot burn a user’s token budget repeating itself.
Configured by managers.
Used by everyone.
Skills, tools and agents are manager-side configuration; everyone else simply uses the agents they are allowed to see.
Set up a provider first
This module needs at least one tested connection from AI → Configuration → AI Providers.
Create a skill
At AI → Skills, add instructions and — for document retrieval — turn on Use RAG, pick an embedding connection and upload documents.
Expose your tools
Open AI → Tools, or any server action, tick Available to AI, write a precise description and choose the LLM-settable fields.
Create the agent
At AI → Agents → New, write the system prompt, then attach connection lines in failover order, skills and tools.
Restrict access
Use Restricted To to limit an agent to specific user groups, or leave it empty to offer it to everyone with AI access.
Watch what it does
AI → Configuration → Tool Logs shows every call the agents have made, with arguments and results.
See it in action
Following the configuration path: providers, then skills, then tools, then the audit trail.
Four workflows, end to end
Build an agent, teach it your documents, give it a tool, then audit what it does.
Build Your First Agent
Assemble a working agent from a prompt, a provider and a handful of tools.
Teach the Agent Your Documents
Ground the agent’s answers in your own policies, catalogues or manuals instead of the model’s general knowledge.
Turn an Action Into a Tool
Let the agent do something in Odoo, safely, without writing a line of Python.
Audit and Tune
Find out what your agents are really doing and where they go wrong.
Full transparency
The current limitations, stated plainly.
Changing an embedding model requires reindexing
Retrieval quality depends on the embedding model you configure, and the stored vectors are tied to it. Existing chunks embedded under the old model are not comparable with new queries, so reindex the skill after switching.
pgvector is optional but recommended at scale
Install the PostgreSQL pgvector extension for fast native cosine search on large document sets. Without it everything still works — retrieval falls back to a pure-Python scan, which is fine for modest corpora but slows down as the index grows.
Scanned PDFs yield no text
PDF extraction goes through Odoo’s built-in attachment indexing. A scanned PDF without an embedded text layer produces nothing, and there is no OCR step — convert such files before indexing them.
Two tool types differ in the dry run
In Test Tool, a webhook’s POST is registered after commit and is therefore cancelled by the rollback, and a mail-posting tool’s message is created and then rolled back. In both cases the wizard shows you what would have been sent.
Questions, answered
Quick answers to the questions buyers ask most.
Can the agent see data the user is not allowed to see?
No. Every tool executes with the requesting user’s own environment, so model access rights, record rules and field-level groups apply exactly as they do in the UI. A field the user cannot read is omitted from what reaches the model.
What stops the agent from deleting or changing things by accident?
Server actions that write data or call out to the internet are confirmation-gated by default: the agent returns a proposal and waits for explicit approval before executing. Read-only tools are never gated.
Can a malicious document tell the agent what to do?
Retrieved knowledge passages and tool results are wrapped in explicit untrusted-content markers before they enter the prompt, and content that tries to forge those markers is stripped. This makes an injection attempt visible to the model rather than indistinguishable from your own instructions.
Do I need to know Python to create tools?
No. Every server action type except Execute Code generates its parameter schema from the fields you tick, so a working tool is a form to fill in. Execute Code remains available when you need it.
Which document formats can a skill index?
Markdown, plain text, CSV and PDF (via Odoo’s attachment indexing).
Does one agent have to use one provider?
No. An agent holds an ordered list of connections and moves down it on failure, so you can put a premium model first and a cheaper or local one behind it as a safety net.
How long are tool logs kept?
90 days by default, then removed by Odoo’s autovacuum. Adjust with the ai_agent_bytesraw.tool_log_retention_days system parameter.
Release history
A clean record of every release.
Bytesraw
🛠️ Need help?
Got a question, found a bug, or need a custom enhancement? Our support team responds within 24 hours on business days.
help@bytesraw.com →💼 Custom development
Need this module tailored to your workflow, or a brand-new Odoo solution? Let’s talk about your project.
info@bytesraw.com →| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Community Apps Dependencies | Show |
| Lines of code | 5902 |
| Technical Name |
ai_agent_bytesraw |
| License | OPL-1 |
| Website | https://www.bytesraw.com |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module