# Quick Start Guide: Simulation Entry Point

### **Introduction**

This file serves as a simulation and testing entry point for the Crypto.com Agent Client. It demonstrates how to initialize the agent, configure plugins, and interact with the LangGraph-based conversational AI.

### Overview

The simulation provides a controlled environment to experiment with the Crypto.com AI Agent’s capabilities before integrating it into real-world applications, configuring it with a large language model (LLM) and blockchain settings to enable seamless interactions. It integrates various plugins, including LangFuse for observability, SQLite for persistent storage, and custom tools for enhanced functionality. &#x20;

Additionally, the script features an interactive CLI-based testing loop, allowing developers to validate AI-driven blockchain interactions in real time which makes it a powerful tool for experimentation and development.

### Key Features

* Agent initialization with LLM and blockchain configurations.
* Plugin integration (LangFuse, SQLite for storage, and custom tools).
* Interactive CLI loop for testing agent responses.

### Prerequisites

Before starting, ensure you have the following components ready.&#x20;

1. Python installed (version ≥ 3.12)
2. API Key for Crypto.com Developer Platform, [click here to learn how to obtain your Crypto.com Developer Platform API key](/crypto.com-developer-platform/developer-platform-dashboard.md).
3. API Keys of AI provider, refer to the [Dynamic AI Model Manager ](/crypto.com-ai-agent-sdk/core-concepts-overview/dynamic-ai-model-manager.md)to see which providers are supported by the AI Agent SDK. Only the API keys for the selected AI provider are required when initializing the agent.
4. For Windows Users:
   1. Windows 10 SDK or Windows 11 SDK depends on system version
   2. MSVC v143 - C++ x64/86 build tools

### Get Started&#x20;

Step 1 - Run this with the following command or to [this Pypi Package page](https://pypi.org/project/cryptocom-agent-client/).

```python
pip install cryptocom-agent-client
```

Step 2 - Before running the script, ensure that all configurations are properly set up: Replace placeholders such as `your-api-key` with valid credentials to enable proper functionality. Then run the python file to initialize the bot.

#### Simulation Example Code

{% tabs %}
{% tab title="OpenAI as Provider" %}

```python
from crypto_com_agent_client import Agent, SQLitePlugin, tool, DefaultMemoryConfigs

# (OPTIONAL) Use SQLiteStorage for persistence
custom_storage = SQLitePlugin(db_path="agent_state.db")

# (OPTIONAL) LangFuse plugin configuration
user_langfuse_handler = {
    "public-key": "user-public-key",
    "secret-key": "user-secret-key",
    "host": "https://langfuse.example.com",
}

# (OPTIONAL) Custom personality and character
personality = {
    "tone": "friendly",
    "language": "German",
    "verbosity": "high",
}
# (OPTIONAL)
instructions = (
    "You are a humorous assistant that always includes a joke in your responses."
)

# (OPTIONAL)
@tool
def get_weather(location: str) -> str:
    """
    Provide the current weather for a given location.

    Args:
        location (str): The name of the location for which to retrieve weather information.

    Returns:
        str: A message describing the current weather in the given location.
    """
    # Simulated weather response for demonstration purposes
    weather_data = {
        "New York": "sunny, 25°C",
        "Berlin": "cloudy, 18°C",
        "Tokyo": "rainy, 22°C",
    }

    weather = weather_data.get(location, "unavailable at the moment")
    return f"The current weather in {location} is {weather}."

# Initialize the agent with LLM and blockchain configurations
agent = Agent.init(
    llm_config={
        "provider": "OpenAI",
        "model": "gpt-4o-mini",
        "provider-api-key": "your-api-key",
        "temperature": 0.7, # This parameter controls the randomness and creativity of the generated text.
        "transfer-limit": -1,  # -1 means no limit (unlimited), 0 disables transfers completely, any positive number (e.g. 5) allows exactly that transfer amount
    },
    blockchain_config={
        "api-key": "your-crypto.com-developer-platform-api-key",
        "private-key": "your-private-key",
        "sso-wallet-url": "your-sso-wallet-url",
        "timeout": "timeout-in-seconds-for-API-calls-default-20s")
    },
    plugins={
        "personality": {
            "tone": "friendly",
            "language": "English",
            "verbosity": "high",
        },
        "instructions": "You are a humorous assistant that always includes a joke in your responses.",
        "tools": [get_weather],
        "storage": custom_storage,
        "memory_config": DefaultMemoryConfigs.balanced(), # Setting to optimize token usage and manage conversation memory in AI agents.
    },
)

# Run the Graph Interactively
# Interactive CLI loop for testing
if __name__ == "__main__":
    print("Welcome to the interactive Crypto.com Agent! Type 'exit' to quit.\n")

    while True:
        user_input = input("You: ")
        if user_input.lower() == "exit":
            print("Goodbye!")
            break

        # Get the agent's response
        response = agent.interact(user_input)
        print(f"Agent: {response}\n")

```

{% endtab %}

{% tab title="Gemini as Provider " %}

```python
from crypto_com_agent_client import Agent, SQLitePlugin, tool

# (OPTIONAL) Use SQLiteStorage for persistence
custom_storage = SQLitePlugin(db_path="agent_state.db")

# (OPTIONAL) LangFuse plugin configuration
user_langfuse_handler = {
    "public-key": "user-public-key",
    "secret-key": "user-secret-key",
    "host": "https://langfuse.example.com",
}

# (OPTIONAL) Custom personality and character
personality = {
    "tone": "friendly",
    "language": "German",
    "verbosity": "high",
}
# (OPTIONAL)
instructions = (
    "You are a humorous assistant that always includes a joke in your responses."
)

# (OPTIONAL)
@tool
def get_weather(location: str) -> str:
    """
    Provide the current weather for a given location.

    Args:
        location (str): The name of the location for which to retrieve weather information.

    Returns:
        str: A message describing the current weather in the given location.
    """
    # Simulated weather response for demonstration purposes
    weather_data = {
        "New York": "sunny, 25°C",
        "Berlin": "cloudy, 18°C",
        "Tokyo": "rainy, 22°C",
    }

    weather = weather_data.get(location, "unavailable at the moment")
    return f"The current weather in {location} is {weather}."

# Initialize the agent with LLM and blockchain configurations
agent = Agent.init(
    llm_config={
        "provider": "GoogleGenAI",
        "model": "gemini-2.0-flash",
        "provider-api-key": "your-api-key",
        "temperature": 0.7, # This parameter controls the randomness and creativity of the generated text.
        "transfer-limit": -1,  # -1 means no limit (unlimited), 0 disables transfers completely, any positive number (e.g. 5) allows exactly that transfer amount
    },
    blockchain_config={
        "api-key": "your-crypto.com-developer-platform-api-key",
        "private-key": "your-private-key",
        "sso-wallet-url": "your-sso-wallet-url",
        "timeout": "timeout-in-seconds-for-API-calls-default-20s")
    },
    plugins={
        "personality": {
            "tone": "friendly",
            "language": "English",
            "verbosity": "high",
        },
        "instructions": "You are a humorous assistant that always includes a joke in your responses.",
        "tools": [get_weather],
        "storage": custom_storage,
        "memory_config": DefaultMemoryConfigs.balanced(), # Setting to optimize token usage and manage conversation memory in AI agents.
    },
)

# Run the Graph Interactively
# Interactive CLI loop for testing
if __name__ == "__main__":
    print("Welcome to the interactive Crypto.com Agent! Type 'exit' to quit.\n")

    while True:
        user_input = input("You: ")
        if user_input.lower() == "exit":
            print("Goodbye!")
            break

        # Get the agent's response
        response = agent.interact(user_input)
        print(f"Agent: {response}\n")

```

{% endtab %}
{% endtabs %}

### **What’s Next?**

This Quick Start provide a foundation. To dive deeper, refer to the [Examples](/crypto.com-developer-platform/developer-platform-client-sdk-examples.md) section for more use cases and advanced scenarios​ that suit your interest, including building your own Telegram bot, AI Agent Chatbot, "Magic Link" Signer and more.\
\
Visit the [API Reference](/resources/resources-for-developers.md) for detailed information on available functionalities.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ai-agent-sdk-docs.crypto.com/crypto.com-ai-agent-sdk/quick-start-guide-simulation-entry-point.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
