Self-Hosting AI-Agent-Server
Introduction
By following this example, we will be able to self-host the AI element of the SDK, specifically the AI agent client
, independently. This offers developers and projects greater control and flexibility compared to using the AI agent API directly. Underneath, the AI agent client utilizes the package to obtain data and interact with Cronos Chains. The example is fully opensource and can be found in this repository
Step 1 - Clone the repository:
git clone https://github.com/crypto-com/developer-platform-sdk-examples.git
cd developer-platform-sdk-examples/ai/cryptocom-ai-agent-service
Step 2 - Install dependencies:
npm install
Step 3 - Create a .env
file with the following content:
NODE_ENV=development
EXPLORER_API_KEY=<Explorer_API_Key>
Step 4 - Run the development server / Production build:
Run the development server by
npm run dev
Once done, the AI agent client
will be running under localhost:8000
OR
Production build by
npm run build
npm start
Afterwards, we can interact with the AI agent client
in a similar manner
API Endpoints
Health Check
Endpoint:
/healthcheck
Method:
GET
Description: Returns the uptime and health status of the service.
Response Example:
{ "status": "success", "result": { "uptime": 120.34, "responsetime": [0, 252939], "message": "OK", "timestamp": 1632846348163 } }
Query Route
Endpoint:
/api/v1/cdc-ai-agent-service/query
Method:
POST
Description: Takes a natural language query, maps it to a blockchain command via OpenAI, and executes the command.
Request Body Example:
{ "query": "get latest block", "options": { "openAI": { "apiKey": "<your-openai-api-key>" }, "chain": { "id": "388", "name": "cronos-zkevm-testnet", "rpc": "https://testnet.zkevm.cronos.org" }, "explorer": { "apiKey": "<your-explorer-api-key>" } } }
Response Example:
{ "status": "success", "result": { "action": "getBlock", "message": "Retrieved latest block", "data": { "blockNumber": 123456, "timestamp": "2023-09-12T10:12:15Z" } } }
Querying with DeepSeek Model
Endpoint:
/api/v1/cdc-ai-agent-service/query
Method:
POST
Description: Takes a natural language query, maps it to a blockchain command via DeepSeek, and executes the command.
Request Body Example:
{ "query": "get latest block", "options": { "deepSeek": { "apiKey": "<your-deepseek-api-key>", "model": "deepseek-chat" }, "llmProvider": "deepseek", "chain": { "id": "388", "name": "cronos-zkevm-testnet", "rpc": "https://testnet.zkevm.cronos.org" }, "explorer": { "apiKey": "<your-explorer-api-key>" } } }
Response Example:
{ "status": "success", "result": { "action": "getBlock", "message": "Retrieved latest block", "data": { "blockNumber": 123456, "timestamp": "2023-09-12T10:12:15Z" } } }
Querying with Mistral Models
Endpoint:
/api/v1/cdc-ai-agent-service/query
Method:
POST
Description: Takes a natural language query, maps it to a blockchain command via DeepSeek, and executes the command.
Supported models:
ministral-3b-latest
,ministral-8b-latest
,mistral-large-latest
,mistral-small-latest
Request Body Example With
mistral-large-latest
:{ "query": "get latest block", "options": { "mistral": { "apiKey": "<your-mistral-api-key>", "model": "mistral-large-latest" }, "llmProvider": "mistral", "chain": { "id": "388", "name": "cronos-zkevm-testnet", "rpc": "https://testnet.zkevm.cronos.org" }, "explorer": { "apiKey": "<your-explorer-api-key>" } } }
Response Example:
{ "status": "success", "result": { "action": "getBlock", "message": "Retrieved latest block", "data": { "blockNumber": 123456, "timestamp": "2023-09-12T10:12:15Z" } } }
Experimental feature - Assigning a key to the AI Agent
Please note that the following is an experimental feature intended for demonstration purposes only. Use this feature with caution, as it may result in the loss of funds.
As introduced in this pull request, developers can follow the instructions to assign a private key directly to the AI agent, enabling it to perform transactions on the user's behalf.
In particular, we need to update the agent.service.ts
file and the .env
file with additional variables, such as the key to be assigned, the RPC URL for transaction broadcasting (see Cronos zkEVM Sepolia Testnet URLs) and the DEX router for swaping:
NODE_ENV=development
EXPLORER_API_KEY=
PRIVATE_KEY=
RPC_URL=
DEX_ROUTER_ADDRESS=

Developers may also refer to the experimental
branch of this repository for further reference.
Last updated
Was this helpful?