-
Notifications
You must be signed in to change notification settings - Fork 1
docs: add Atomic Agents, open-connector and DeepTutor integration guides #82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,128 @@ | ||
| --- | ||
| title: "Atomic Agents" | ||
| icon: "/integration-logo/atomic-agents-icondoc.svg" | ||
| description: "Use Atomic Agents with Eden AI to build agents on 500+ AI models through an OpenAI-compatible, Instructor-powered interface." | ||
| --- | ||
|
|
||
| import { TechArticleSchema } from "/snippets/TechArticleSchema.mdx"; | ||
|
|
||
| <TechArticleSchema | ||
| title={"Atomic Agents"} | ||
| description={"Use Atomic Agents with Eden AI to build agents on 500+ AI models through an OpenAI-compatible, Instructor-powered interface."} | ||
| path="v3/integrations/atomic-agents" | ||
| articleSection="AI Frameworks" | ||
| about={"Agent Framework Integration"} | ||
| proficiencyLevel="Intermediate" | ||
| keywords={["Eden AI", "AI API", "Atomic Agents", "Python", "Instructor"]} | ||
| datePublished="2026-07-27T00:00:00Z" | ||
| dateModified="2026-07-27T00:00:00Z" | ||
| /> | ||
|
|
||
| Use Atomic Agents with Eden AI to build agents on 500+ AI models through an OpenAI-compatible, Instructor-powered interface. | ||
|
|
||
| ## Overview | ||
|
|
||
| [Atomic Agents](https://github.com/Eigenwise/atomic-agents) is a lightweight, modular Python framework for building AI agents on composable, schema-driven building blocks (via [Instructor](https://github.com/instructor-ai/instructor) and Pydantic). Atomic Agents works with Eden AI out of the box through its existing OpenAI-compatible client, so your agents reach models from OpenAI, Anthropic, Google, Mistral and more behind one key, with EU-based, GDPR-aligned inference. | ||
|
Check warning on line 25 in v3/integrations/atomic-agents.mdx
|
||
|
|
||
| ## Installation | ||
|
|
||
| Eden AI reuses the OpenAI client and Instructor that Atomic Agents already relies on: | ||
|
|
||
| <CodeGroup> | ||
| ```bash pip | ||
| pip install atomic-agents openai instructor | ||
| ``` | ||
|
|
||
| ```bash poetry | ||
| poetry add atomic-agents openai instructor | ||
| ``` | ||
| </CodeGroup> | ||
|
|
||
| ## Quick Start | ||
|
|
||
| Wrap an OpenAI client pointed at Eden AI with Instructor — the same pattern used for any other OpenAI-compatible provider — and pass it to your agent: | ||
|
|
||
| <CodeGroup> | ||
| ```bash .env | ||
| EDENAI_API_KEY=your_api_key_here | ||
| ``` | ||
|
|
||
| {/* skip-test */} | ||
| ```python Python | ||
| import os | ||
| import instructor | ||
| from openai import OpenAI | ||
| from atomic_agents.agents.base_agent import BaseAgent, BaseAgentConfig | ||
|
|
||
| client = instructor.from_openai( | ||
| OpenAI( | ||
| base_url="https://api.edenai.run/v3", | ||
| api_key=os.getenv("EDENAI_API_KEY"), | ||
| ) | ||
| ) | ||
|
|
||
| agent = BaseAgent( | ||
| config=BaseAgentConfig( | ||
| client=client, | ||
| model="anthropic/claude-sonnet-5", # <provider>/<model> | ||
| ) | ||
| ) | ||
|
|
||
| response = agent.run(agent.input_schema(chat_message="Hello! How are you?")) | ||
| print(response.chat_message) | ||
|
Comment on lines
+51
to
+72
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
python -m pip install -U atomic-agents openai instructor
python - <<'PY'
from inspect import signature
from atomic_agents import AtomicAgent, AgentConfig, BasicChatInputSchema
assert "config" in signature(AtomicAgent).parameters
assert "chat_message" in signature(BasicChatInputSchema).parameters
PYRepository: edenai/docs Length of output: 312 🌐 Web query:
💡 Result: Atomic Agents is a lightweight, modular Python framework designed for building agentic AI pipelines and applications [1][2]. It leverages Pydantic for data validation and schema serialization, and is built on top of the Instructor library to support various LLM providers (e.g., OpenAI, Anthropic, Gemini, Ollama) [1][3][2]. Key Components and Definitions: AtomicAgent The AtomicAgent class is the core component for constructing AI agents [4][5]. It manages chat interactions, history, system prompts, and responses from language models [4][5]. It is instantiated with a configuration object and expects both an input schema and an output schema (typically via generic type parameters: AtomicAgent[InputSchema, OutputSchema]) [6][7]. AgentConfig AgentConfig is a Pydantic model that provides the configuration for an AtomicAgent [4][8]. It includes essential parameters such as the Instructor client, the LLM model identifier, optional history management (ChatHistory), and a system prompt generator [4][8]. As of recent updates (v2.0+), it no longer requires the explicit inclusion of input or output schemas, which are now handled at the agent class level [7]. BasicChatInputSchema BasicChatInputSchema is a standard input schema that inherits from BaseIOSchema [8][7]. It provides a default structure for user input in chat-based agents, typically containing a chat_message field [8]. BaseAgentConfig (Legacy) BaseAgentConfig is a deprecated class [7]. In earlier versions of the framework, it served the role now filled by AgentConfig [7]. Users upgrading from older versions must migrate to AgentConfig [7]. For reference, the framework also includes several other key classes such as ChatHistory (for memory management) and BaseIOSchema (the base class for all input/output schemas) [4][9][7]. The framework's architecture was significantly updated in version 2.0, with deprecated legacy names (like BaseAgent, BaseAgentConfig, etc.) being replaced by the current structures mentioned above [7]. [4][1][8][7] Citations:
🌐 Web query:
💡 Result: To get started with Atomic Agents, you can clone the main repository using the following command: git clone https://github.com/eigenwise/atomic-agents.git The Atomic Agents framework is designed to be a lightweight and modular system for building AI agents, built on top of Instructor and Pydantic [1][2]. Regarding the use of BaseAgent and InputSchema in your quickstart, Atomic Agents primarily utilizes the AtomicAgent class, which takes input and output schemas defined as Pydantic models [3][4]. Below is a standard pattern for creating an agent with custom schemas: from pydantic import Field from atomic_agents import AtomicAgent, AgentConfig, BaseIOSchema # 1. Define your schemas inheriting from BaseIOSchema class MyInputSchema(BaseIOSchema): query: str = Field(..., description="The user's query.") class MyOutputSchema(BaseIOSchema): response: str = Field(..., description="The agent's response.") # 2. Configure and initialize the agent agent = AtomicAgent[MyInputSchema, MyOutputSchema]( config=AgentConfig( client=your_instructor_client, model="gpt-4o", # or your preferred model #... other config options like system_prompt_generator or history)) # 3. Run the agent input_data = MyInputSchema(query="Hello, agent!") result = agent.run(input_data) print(result.response) Key resources for your quickstart include: - Official Documentation: https://eigenwise.github.io/atomic-agents/ [1] - GitHub Repository: https://github.com/eigenwise/atomic-agents [5] - Example directory: Check the atomic-examples folder in the repository for various implementations, including basic chatbots and custom schemas [5][2]. Note: Ensure you have installed the core library via pip install atomic-agents and any specific provider SDKs (e.g., openai, anthropic) required for your chosen model [1][6]. Citations:
🌐 Web query:
💡 Result: In the Atomic Agents framework, BasicChatInputSchema is the default input schema used for standard agent interactions [1][2]. It is defined as a Pydantic model that inherits from BaseIOSchema and contains a single required field, chat_message, which captures the user's input [1][2]. To use it in a quickstart context, you typically instantiate an AtomicAgent with BasicChatInputSchema (and a corresponding output schema, such as BasicChatOutputSchema) as type parameters, then pass an instance of the schema to the agent's run method [3][4]. Quickstart Example: import instructor import openai from atomic_agents import AtomicAgent, AgentConfig, BasicChatInputSchema, BasicChatOutputSchema from atomic_agents.context import ChatHistory # 1. Setup client = instructor.from_openai(openai.OpenAI) history = ChatHistory # 2. Initialize Agent agent = AtomicAgent[BasicChatInputSchema, BasicChatOutputSchema]( config=AgentConfig( client=client, model="gpt-5-mini", history=history)) # 3. Use BasicChatInputSchema to send a message user_message = "Tell me about quantum computing" response = agent.run(BasicChatInputSchema(chat_message=user_message)) print(response.chat_message) Key Implementation Details: - The schema is designed for simple, chat-based interactions [1][2]. - You can access the agent's expected input schema via agent.input_schema [5]. - For more complex interactions, you can define custom schemas inheriting from BaseIOSchema and replace BasicChatInputSchema in the agent definition [6]. Citations:
🌐 Web query:
💡 Result: In the atomic-agents library, the classes BaseAgent and BaseAgentConfig were deprecated and subsequently removed in version 2.0.0 as part of a major refactor [1][2]. The following replacements should be used: - BaseAgent has been renamed to AtomicAgent [3][1]. - BaseAgentConfig has been renamed to AgentConfig [3][1]. Additionally, the library underwent significant structural changes in version 2.0.0, including: - Simplification of import paths by eliminating the.lib directory [3][2]. - Renaming of other related classes, such as BaseAgentInputSchema to BasicChatInputSchema and AgentMemory to ChatHistory [1]. - Updates to how schemas are specified; for example, they are now typically handled via generic type parameters (e.g., AtomicAgent[InputSchema, OutputSchema]), and input_schema and output_schema fields have been removed from the configuration object [1]. Users migrating to v2.0.0 or later should consult the official UPGRADE_DOC.md in the repository for a complete list of breaking changes and migration steps [1]. Citations:
🏁 Script executed: #!/bin/bash
set -euo pipefail
# Locate and inspect the referenced atomic agents documentation snippet(s).
wd="$(pwd)"
if [ -z "$wd" ]; then
printf 'PWD unavailable\n'
exit 0
fi
printf 'Tracked candidates for atomic-agents.mdx:\n'
git ls-files | grep -E '(^|/)atomic-agents\.mdx$|atomic-agents' || true
printf '\nFile excerpt for v3/integrations/atomic-agents.mdx:\n'
if [ -f v3/integrations/atomic-agents.mdx ]; then
wc -l v3/integrations/atomic-agents.mdx
sed -n '1,130p' v3/integrations/atomic-agents.mdx | cat -n
else
echo 'v3/integrations/atomic-agents.mdx not found'
fi
printf '\nSearch for BaseAgent/BaseAgentConfig/input_schema usage:\n'
rg -n "BaseAgent|BaseAgentConfig|input_schema\\(|AtomicAgent|AgentConfig|BasicChatInputSchema|atomic-agents" v3/integrations/atomic-agents.mdx 2>/dev/null || trueRepository: edenai/docs Length of output: 6230 Update the Atomic Agents snippets to the current API. The installed 🤖 Prompt for AI Agents |
||
| ``` | ||
| </CodeGroup> | ||
|
|
||
| Both Instructor `TOOLS` and `JSON` modes work unchanged with Eden AI. | ||
|
|
||
| ## Switching models | ||
|
|
||
| Change the `model` string on `BaseAgentConfig` to reach any Eden AI model — no per-provider SDKs, no code changes: | ||
|
|
||
| <CodeGroup> | ||
| {/* skip-test */} | ||
| ```python Python | ||
| for model in [ | ||
| "openai/gpt-5.5", | ||
| "anthropic/claude-sonnet-5", | ||
| "mistral/mistral-large-2512", | ||
| ]: | ||
| agent = BaseAgent(config=BaseAgentConfig(client=client, model=model)) | ||
| response = agent.run(agent.input_schema(chat_message="Write a haiku about the sea.")) | ||
| print(model, "->", response.chat_message) | ||
| ``` | ||
| </CodeGroup> | ||
|
|
||
| ## Available Models | ||
|
|
||
| Use the `provider/model` format for any Eden AI model: | ||
|
|
||
| **OpenAI** | ||
| - `openai/gpt-5.5` | ||
| - `openai/gpt-5-mini` | ||
|
|
||
| **Anthropic** | ||
| - `anthropic/claude-sonnet-5` | ||
| - `anthropic/claude-haiku-4-5` | ||
|
|
||
| **Google** | ||
| - `google/gemini-2.5-pro` | ||
| - `google/gemini-3.5-flash` | ||
|
|
||
| **Mistral** | ||
| - `mistral/mistral-large-2512` | ||
| - `mistral/mistral-small-2603` | ||
|
|
||
| ## Environment Variables | ||
|
|
||
| <CodeGroup> | ||
| ```bash .env | ||
| EDENAI_API_KEY=your_api_key_here | ||
| ``` | ||
| </CodeGroup> | ||
|
|
||
| ## Next Steps | ||
|
|
||
| - [aisuite](/v3/integrations/aisuite) - Another OpenAI-style multi-provider interface | ||
| - [Chat Completions](/v3/llms/chat-completions) - Core LLM endpoint | ||
| - [List LLM Models](/v3/llms/listing-models) - Browse available providers and models | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,94 @@ | ||
| --- | ||
| title: "DeepTutor" | ||
| icon: "/integration-logo/deeptutor-icondoc.svg" | ||
| description: "Use DeepTutor with Eden AI to run your self-hosted study and research app on 500+ AI models through one API." | ||
| --- | ||
|
|
||
| import { TechArticleSchema } from "/snippets/TechArticleSchema.mdx"; | ||
|
|
||
| <TechArticleSchema | ||
| title={"DeepTutor"} | ||
| description={"Use DeepTutor with Eden AI to run your self-hosted study and research app on 500+ AI models through one API."} | ||
| path="v3/integrations/deeptutor" | ||
| articleSection="Chat UI" | ||
| about={"AI Study & Research App Integration"} | ||
| proficiencyLevel="Beginner" | ||
| keywords={["Eden AI", "AI API", "DeepTutor", "RAG", "Study"]} | ||
| datePublished="2026-07-27T00:00:00Z" | ||
| dateModified="2026-07-27T00:00:00Z" | ||
| /> | ||
|
|
||
| Use DeepTutor with Eden AI to run your self-hosted study and research app on 500+ AI models through one API. | ||
|
|
||
| ## Overview | ||
|
|
||
| [DeepTutor](https://github.com/HKUDS/DeepTutor) is a self-hosted AI study and research app — chat, quizzes, and RAG knowledge bases. Eden AI is registered as a **built-in gateway provider** in DeepTutor's model registry, so your whole instance can run on models from OpenAI, Anthropic, Google, Mistral and more behind one key, with EU-based, GDPR-aligned inference. | ||
|
|
||
| ## Installation | ||
|
|
||
| <CodeGroup> | ||
| ```bash pip | ||
| mkdir -p my-deeptutor && cd my-deeptutor | ||
| pip install -U deeptutor | ||
| ``` | ||
| </CodeGroup> | ||
|
|
||
| ## Quick Start | ||
|
|
||
| Select Eden AI as the LLM provider when the setup wizard prompts for one: | ||
|
|
||
| <CodeGroup> | ||
| ```bash Terminal | ||
| deeptutor init # prompts for LLM provider / base URL / API key / model | ||
| deeptutor start # starts backend + frontend | ||
| ``` | ||
| </CodeGroup> | ||
|
|
||
| Open the frontend URL printed in the terminal (default `http://127.0.0.1:3782`). Already running an instance? Add or change the provider later from **Settings → Models** in the web UI instead of re-running `init` — DeepTutor auto-detects Eden AI from the base URL. | ||
|
|
||
| ## Configuration | ||
|
|
||
| DeepTutor's provider registry stores the profile in `data/user/settings/model_catalog.json`: | ||
|
|
||
| | Field | Value | | ||
| |---|---| | ||
| | Provider | `edenai` | | ||
| | Base URL | `https://api.edenai.run/v3` | | ||
| | API key | `EDENAI_API_KEY` | | ||
| | Model | `provider/model`, e.g. `anthropic/claude-sonnet-5` | | ||
|
Comment on lines
+51
to
+58
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/HKUDS/DeepTutor.git "$tmp/DeepTutor"
rg -n 'project-root.*\.env|model_catalog|Settings.*Models|dotenv' "$tmp/DeepTutor/README.md"Repository: edenai/docs Length of output: 2012 🏁 Script executed: #!/bin/bash
set -euo pipefail
# Inspect the relevant v3/deeptutor MDX sections and search the docs repo for DeepTutor EDENAI references.
if [ -f v3/integrations/deeptutor.mdx ]; then
echo "== v3/integrations/deeptutor.mdx relevant lines =="
sed -n '40,95p' v3/integrations/deeptutor.mdx | nl -ba -v40
else
echo "missing v3/integrations/deeptutor.mdx"
fi
echo "== .env/EDENAI/model_catalog mentions =="
rg -n 'EDENAI_API_KEY|Environment Variables|model_catalog\.json|deep.*tutor|deeptutor|DeepTutor|\.env' .Repository: edenai/docs Length of output: 240 🏁 Script executed: #!/bin/bash
set -euo pipefail
pwd
printf '\n== file exists? ==\n'
test -f v3/integrations/deeptutor.mdx && echo present || echo missing
printf '\n== v3/integrations/deeptutor.mdx relevant lines =="\n'
if test -f v3/integrations/deeptutor.mdx; then
sed -n '40,95p' v3/integrations/deeptutor.mdx | awk '{printf "%5d %s\n", NR+39, $0}'
fi
printf '\n== deep tutor/env/model catalog mentions in current repo =="\n'
rg -n 'EDENAI_API_KEY|Environment Variables|model_catalog\.json|deep.*tutor|deeptutor|DeepTutor|\.env' . || trueRepository: edenai/docs Length of output: 13674 Remove the unused DeepTutor configures the EDTN AI key through 🤖 Prompt for AI AgentsSource: Coding guidelines |
||
|
|
||
| ## Available Models | ||
|
|
||
| Use the `provider/model` format for any Eden AI model: | ||
|
|
||
| **OpenAI** | ||
| - `openai/gpt-5.5` | ||
| - `openai/gpt-5-mini` | ||
|
|
||
| **Anthropic** | ||
| - `anthropic/claude-sonnet-5` | ||
| - `anthropic/claude-haiku-4-5` | ||
|
|
||
| **Google** | ||
| - `google/gemini-2.5-pro` | ||
| - `google/gemini-3.5-flash` | ||
|
|
||
| **Mistral** | ||
| - `mistral/mistral-large-2512` | ||
| - `mistral/mistral-small-2603` | ||
|
|
||
| ## Environment Variables | ||
|
|
||
| <CodeGroup> | ||
| ```bash .env | ||
| EDENAI_API_KEY=your_api_key_here | ||
| ``` | ||
| </CodeGroup> | ||
|
|
||
| DeepTutor reads this key itself once the Eden AI provider is configured — it does not need to be exported manually in most setups (the Settings UI writes it into `model_catalog.json`). | ||
|
|
||
| ## Next Steps | ||
|
|
||
| - [Open WebUI](/v3/integrations/open-webui) - Another self-hosted chat interface | ||
| - [Chat Completions](/v3/llms/chat-completions) - Core LLM endpoint | ||
| - [List LLM Models](/v3/llms/listing-models) - Browse available providers and models | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,100 @@ | ||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||
| title: "open-connector" | ||||||||||||||||||||||||||
| icon: "/integration-logo/open-connector-icondoc.svg" | ||||||||||||||||||||||||||
| description: "Use open-connector with Eden AI to expose 500+ AI models through a self-hosted gateway with SDK, CLI, MCP and HTTP access." | ||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| import { TechArticleSchema } from "/snippets/TechArticleSchema.mdx"; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| <TechArticleSchema | ||||||||||||||||||||||||||
| title={"open-connector"} | ||||||||||||||||||||||||||
| description={"Use open-connector with Eden AI to expose 500+ AI models through a self-hosted gateway with SDK, CLI, MCP and HTTP access."} | ||||||||||||||||||||||||||
| path="v3/integrations/open-connector" | ||||||||||||||||||||||||||
| articleSection="AI Gateway" | ||||||||||||||||||||||||||
| about={"LLM Gateway Integration"} | ||||||||||||||||||||||||||
| proficiencyLevel="Intermediate" | ||||||||||||||||||||||||||
| keywords={["Eden AI", "AI API", "open-connector", "LLM Gateway", "MCP"]} | ||||||||||||||||||||||||||
| datePublished="2026-07-27T00:00:00Z" | ||||||||||||||||||||||||||
| dateModified="2026-07-27T00:00:00Z" | ||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Use open-connector with Eden AI to expose 500+ AI models through a self-hosted gateway with SDK, CLI, MCP and HTTP access. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Overview | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| [open-connector](https://github.com/oomol-lab/open-connector) is an open-source gateway connecting 1000+ SaaS providers to AI agents via SDK, CLI, MCP and HTTP. Eden AI ships as a **built-in connector**, so any agent wired through open-connector reaches models from OpenAI, Anthropic, Google, Mistral and more behind one key, with EU-based, GDPR-aligned inference and per-request cost visibility. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Installation | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| open-connector is a self-hosted gateway, distributed as a Docker image: | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| <CodeGroup> | ||||||||||||||||||||||||||
| ```bash Docker | ||||||||||||||||||||||||||
| docker compose up | ||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||
| </CodeGroup> | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| This pulls `ghcr.io/oomol-lab/open-connector:latest` and serves the console and API at `http://localhost:3000`. | ||||||||||||||||||||||||||
|
Comment on lines
+29
to
+37
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/oomol-lab/open-connector.git "$tmp/open-connector"
test -f "$tmp/open-connector/docker-compose.yml"Repository: edenai/docs Length of output: 202 🏁 Script executed: #!/bin/bash
set -e
echo "== target file section =="
sed -n '1,80p' v3/integrations/open-connector.mdx | cat -n
echo
echo "== repository files mentioning open-connector docker compose =="
rg -n "open-connector|docker-compose|compose" v3/integrations/open-connector.mdx . -g '!node_modules' -g '!dist' || trueRepository: edenai/docs Length of output: 10015 Make the Docker quick start runnable from a clean checkout.
Proposed fix+git clone --depth 1 https://github.com/oomol-lab/open-connector.git
+cd open-connector
docker compose up📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Quick Start | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Store your Eden AI key as a connection credential, then call the `edenai` service: | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| <CodeGroup> | ||||||||||||||||||||||||||
| ```bash Add credential | ||||||||||||||||||||||||||
| curl -s -X PUT http://localhost:3000/api/connections/edenai \ | ||||||||||||||||||||||||||
| -H 'content-type: application/json' \ | ||||||||||||||||||||||||||
| -d '{"authType":"api_key","values":{"apiKey":"your_api_key_here"}}' | ||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ```bash Call Eden AI | ||||||||||||||||||||||||||
| curl -s -X POST http://localhost:3000/v1/actions/edenai.create_chat_completion \ | ||||||||||||||||||||||||||
| -H 'content-type: application/json' \ | ||||||||||||||||||||||||||
| -d '{ | ||||||||||||||||||||||||||
| "input": { | ||||||||||||||||||||||||||
| "model": "openai/gpt-5.5", | ||||||||||||||||||||||||||
| "messages": [{"role": "user", "content": "Hello! How are you?"}] | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| }' | ||||||||||||||||||||||||||
|
Comment on lines
+41
to
+58
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
curl -fsS http://localhost:3000/openapi.json | jq '.components.securitySchemes'
curl -fsS http://localhost:3000/api/providers/edenai | jq .Repository: edenai/docs Length of output: 247 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== repo files =="
git ls-files | sed -n '1,120p'
echo "== target file excerpt =="
if [ -f v3/integrations/open-connector.mdx ]; then
nl -ba v3/integrations/open-connector.mdx | sed -n '1,140p'
else
fd -a 'open-connector\.mdx' . | sed -n '1,20p'
fi
echo "== docs/credentials.md excerpt if present =="
if [ -f docs/credentials.md ]; then
nl -ba docs/credentials.md | sed -n '1,240p'
else
fd -a 'credentials\.md' . | sed -n '1,20p'
fi
echo "== mentions of OOMOL_CONNECT_ENCRYPTION_KEY =="
rg -n "OOMOL_CONNECT_ENCRYPTION_KEY|encryption|credential|api_key|authType|Authorization:" . -g '!node_modules' -g '!dist' -g '!build' | sed -n '1,260p'Repository: edenai/docs Length of output: 4296 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== target file excerpt =="
if [ -f v3/integrations/open-connector.mdx ]; then
cat -n v3/integrations/open-connector.mdx | sed -n '1,160p'
else
echo "v3/integrations/open-connector.mdx not found"
fd -a 'open-connector\.mdx' . 2>/dev/null || true
fi
echo "== docs/credentials.md excerpt if present =="
if [ -f docs/credentials.md ]; then
cat -n docs/credentials.md | sed -n '1,260p'
else
fd -a 'credentials\.md' . 2>/dev/null | while read -r f; do echo "--- $f"; cat -n "$f" | sed -n '1,120p'; done
fi
echo "== repository-wide mentions =="
rg -n "OOMOL_CONNECT_ENCRYPTION_KEY|encryption|credential|authType|Authorization: Bearer|Bearer <api_key>|Bearer"| || true
echo "== api connection/provider/action examples in v3 integrations =="
cat -n v3/integrations/open-connector.mdx | sed -n '1,160p' | rg -n "connections|edenai|api/|v1/actions|Authorization|bearer|secret|auth" -C 3 || trueRepository: edenai/docs Length of output: 4467 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== repository-wide relevant mentions =="
rg -n "OOMOL_CONNECT_ENCRYPTION_KEY|encryption|credential|authType|Authorization: Bearer|Bearer <api_key>|Bearer" . || true
echo "== API docs endpoint examples =="
rg -n "Authorization: Bearer <api_key>|Bearer <api_key>|security|Bearer" api-reference v3 -g '*.mdx' -g '*.json' | sed -n '1,120p'Repository: edenai/docs Length of output: 29506 🌐 Web query:
💡 Result: In OOMOL OpenConnector, the OOMOL_CONNECT_ENCRYPTION_KEY environment variable is used to enable AES-256-GCM encryption for sensitive data stored in the runtime database, such as SQLite [1][2]. When this key is configured, the system encrypts provider credentials, OAuth client configuration, and completed idempotent Action response payloads at rest [1][2]. If OOMOL_CONNECT_ENCRYPTION_KEY is not set, these items are stored in plaintext within the SQLite database [1][3]. In such cases, the runtime will issue a startup warning, and you should treat the SQLite database file as a sensitive, unprotected store [1][4]. Key management and usage details include: - External Storage: The OpenConnector runtime does not store the encryption key itself [1][3]. You are responsible for managing it securely using a secret manager or vault [3][5]. - Irrecoverability: If the encryption key is lost, any records encrypted with that key cannot be recovered [1][5]. - Key Rotation: You can rotate the encryption key by using the runtime:data rotate-key command, providing both the current (OOMOL_CONNECT_ENCRYPTION_KEY) and the new (OOMOL_CONNECT_NEW_ENCRYPTION_KEY) keys [1][6]. - Metadata: Even with encryption enabled, certain data remains unencrypted as metadata, including idempotency key hashes, request fingerprints, claim states, and timestamps [1][2]. Citations:
Document OpenConnector auth and credential-at-rest safeguards. The example omits the required bearer auth for the 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||
| </CodeGroup> | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| The base URL (`https://api.edenai.run/v3`) is built into the connector — no extra configuration needed. The response includes the standard OpenAI-compatible fields plus a top-level `cost` field with the Eden AI billed cost. | ||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
curl -fsS http://localhost:3000/v1/actions/edenai.create_chat_completion \
-H "Authorization: Bearer ${OOMOL_CONNECT_RUNTIME_TOKEN}" \
-H 'content-type: application/json' \
-d '{"input":{"model":"openai/gpt-5.5","messages":[{"role":"user","content":"Hello"}]}}' |
jq '{top_level_cost: .cost, nested_cost: .data.cost, nested_choices: .data.choices}'Repository: edenai/docs Length of output: 198 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== file context =="
sed -n '1,140p' v3/integrations/open-connector.mdx 2>/dev/null || true
echo
echo "== search open-connector/docs runtime api references =="
rg -n "data.cost|choices|success|message|data|meta|open-connector|edenai.create_chat_completion|create_chat_completion|runtime-api" . --glob '!node_modules' --glob '!dist' --glob '!build' --glob '!coverage' | head -200Repository: edenai/docs Length of output: 24432 🌐 Web query:
💡 Result: In the oomol-lab/open-connector project, the HTTP Runtime API (endpoints under /v1) utilizes a uniform JSON response envelope for its communication [1][2]. When a request is successful, the server returns a JSON response containing specific fields, including data and meta [3][4]. Based on the SDK implementation and test cases, the standard structure of this successful response envelope typically includes: data: The actual payload or result of the action or API call [3][5][6][4]. message: A human-readable status message (often "OK" for successful operations) [5][6][4]. meta: An object containing metadata regarding the request execution, which commonly includes [5][6][4]: - executionId: A server-assigned identifier for the specific execution [5][6][4]. - actionId: The identifier of the action being performed [5][6][4]. The SDK's executeRaw method explicitly maps these envelope fields into a RawResult object [6][4]. In contrast, the standard execute method returns the data field directly to the caller [5][4]. If a request fails, the server emits a different structure, generally Citations:
🏁 Script executed: #!/bin/bash
set -euo pipefail
python3 - <<'PY'
import urllib.request
urls = [
"https://raw.githubusercontent.com/oomol-lab/open-connector/main/docs/runtime-api.md",
"https://raw.githubusercontent.com/oomol-lab/open-connector/main/docs/runtime-api.md",
]
for url in urls[:1]:
with urllib.request.urlopen(url, timeout=20) as r:
text = r.read().decode("utf-8")
start = text.find("## Runtime API")
end = text.find("## SDK", start)
section = text[start:end] if end != -1 else text[start:start+1600]
print(section)
PY
echo
echo "== fetch open-connector repo runtime-api markdown excerpt =="
curl -fsS https://raw.githubusercontent.com/oomol-lab/open-connector/main/docs/runtime-api.md | sed -n '1,260p'Repository: edenai/docs Length of output: 2435 🌐 Web query:
💡 Result: The path /v1/actions/edenai.create_chat_completion refers to a specific Action within the OpenConnector ecosystem, which is an open-source gateway for connecting AI agents to various SaaS providers [1][2]. Regarding "data choices" and "cost": 1. Data Choices: OpenConnector acts as a mediator for API calls [3]. When using an action like edenai.create_chat_completion, the runtime handles the routing of your request to the Eden AI API [4][5]. The specific "data choices"—such as the model selection, message history, and other parameters—are defined by the schema of the Eden AI Chat Completions API [6][7]. OpenConnector exposes these through its generated OpenAPI specification, allowing you to inspect the required and optional inputs (e.g., model, messages, temperature) directly from the runtime's generated /openapi.json or through the Web Console [1][4]. 2. Cost: OpenConnector itself is an open-source gateway software [1][2] and does not inherently charge for executing actions. However, the cost of calling edenai.create_chat_completion depends entirely on your subscription or usage plan with Eden AI [7][8]. Because OpenConnector simply proxies these requests to the provider [4][5], any financial costs, rate limits, or data usage fees are governed by your direct agreement with Eden AI [7]. For technical implementation, you can call this action using the Connector SDK, the oo CLI, or by making a direct HTTP POST request to the /v1/actions/edenai.create_chat_completion endpoint on your OpenConnector runtime [1][9][4]. Ensure your runtime is configured with the necessary Eden AI credentials (usually an API key) in the Web Console, as the runtime maintains credential isolation [4][2][10]. Citations:
Describe the OpenConnector response envelope correctly. OpenConnector 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Available Models | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| The `edenai` service exposes `edenai.list_models` and `edenai.create_chat_completion`. Use the `provider/model` format for any Eden AI model: | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **OpenAI** | ||||||||||||||||||||||||||
| - `openai/gpt-5.5` | ||||||||||||||||||||||||||
| - `openai/gpt-5-mini` | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Anthropic** | ||||||||||||||||||||||||||
| - `anthropic/claude-sonnet-5` | ||||||||||||||||||||||||||
| - `anthropic/claude-haiku-4-5` | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Google** | ||||||||||||||||||||||||||
| - `google/gemini-2.5-pro` | ||||||||||||||||||||||||||
| - `google/gemini-3.5-flash` | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Mistral** | ||||||||||||||||||||||||||
| - `mistral/mistral-large-2512` | ||||||||||||||||||||||||||
| - `mistral/mistral-small-2603` | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Credentials | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Unlike most integrations, open-connector stores the Eden AI key as a **connection credential** through its API rather than an environment variable: | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| <CodeGroup> | ||||||||||||||||||||||||||
| ```bash Update credential | ||||||||||||||||||||||||||
| curl -s -X PUT http://localhost:3000/api/connections/edenai \ | ||||||||||||||||||||||||||
| -H 'content-type: application/json' \ | ||||||||||||||||||||||||||
| -d '{"authType":"api_key","values":{"apiKey":"your_api_key_here"}}' | ||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||
| </CodeGroup> | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Next Steps | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - [Lynkr](/v3/integrations/lynkr) - Another self-hosted LLM gateway | ||||||||||||||||||||||||||
| - [Bifrost](/v3/integrations/bifrost) - Custom-provider LLM gateway | ||||||||||||||||||||||||||
| - [Chat Completions](/v3/llms/chat-completions) - Core LLM endpoint | ||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use consistent token placeholders across the integration guides.
These examples use
your_api_key_herewithout distinguishing production credentials from sandbox credentials.v3/integrations/atomic-agents.mdx#L46-L48: useapi_tokenfor the production.envexample.v3/integrations/atomic-agents.mdx#L119-L121: apply the same production/sandbox token naming.v3/integrations/open-connector.mdx#L44-L47: replace the JSON placeholder with an explicitapi_tokenorsandbox_api_token.v3/integrations/open-connector.mdx#L89-L92: apply the same token naming to the update example.As per coding guidelines, V3 examples must distinguish production
api_tokenfrom testingsandbox_api_token.📍 Affects 2 files
v3/integrations/atomic-agents.mdx#L46-L48(this comment)v3/integrations/atomic-agents.mdx#L119-L121v3/integrations/open-connector.mdx#L44-L47v3/integrations/open-connector.mdx#L89-L92🤖 Prompt for AI Agents
Source: Coding guidelines