Skip to main content

This package is an updated WYN-Agent package.

Project description

🌟 WYN-Agent-X

WYN-Agent-X is a dynamic and extendable chatbot that integrates with OpenAI and Twilio, allowing you to seamlessly handle user intents and trigger APIs (like sending SMS) based on natural language input. Plus, it’s super friendly and conversational! 🤖💬

Features:

  • AI-Powered Conversations: Uses OpenAI’s GPT models for general chit-chat. Just type away!
  • Trigger-Based API Calls: Automatically detects when users want to perform specific tasks (like sending a message), and triggers the corresponding API call.
  • Easy to Extend: Add more APIs by simply updating the metadata.json file. No need to dig into the core logic! 🌱

🚀 Installation

You can easily install the package via pip:

pip install wyn-agent-x

📂 Directory Structure

wyn-agent-x/
│
├── requirements.txt     # List of dependencies to install
├── wyn_agent_x/
│   ├── __init__.py      # Initializes the package   ├── main.py          # Main entry point for the chatbot   ├── helper.py        # Helper functions and processing logic   ├── list_of_apis.py  # All API functions registered here   ├── metadata.json    # Dynamic metadata for API calls and trigger words
│── pyproject.toml       # Optional config if packaging the project
└── README.md            # You're reading this!

System Diagram

The system is designed with an intent processor interpreting the prompt's purpose from the user. After intent processor determines the necessary API required for execution, it attemps to fill up the required input parameters in the input payload. For the unfilled parameters, the resolver bounces the questions back to the user to seek more information before execution. This process interates until all required parameters are filled.

For system diagram, please see here

🎮 Sample Usage

Want to try it out? Just import the AgentX class, provide your API keys, and start chatting with your agent!

from google.colab import userdata

# Fetch API credentials
OPENAI_API_KEY = userdata.get('OPENAI_API_KEY')
TWILIO_ACCOUNT_SID = userdata.get("YOUR_TWILIO_ACCOUNT_SID")
TWILIO_AUTH_TOKEN = userdata.get("YOUR_TWILIO_AUTH_TOKEN")
SERPAPI_API_KEY = userdata.get("SERPAPI_API_KEY")
PY_EMAIL_KEY = userdata.get("PY_EMAIL_KEY")
CLAUDE_API_KEY = os.getenv("CLAUDE_API_KEY")

# Import the agent
from wyn_agent_x.main import AgentX

# Initialize and start the chat!
agent = AgentX(
    api_key=OPENAI_API_KEY,
    account_sid=TWILIO_ACCOUNT_SID,
    auth_token=TWILIO_AUTH_TOKEN,
    serpapi_key=SERPAPI_API_KEY,
    email_key=PY_EMAIL_KEY,
    claude_api_key=CLAUDE_API_KEY,
    protocol='You are a helpful assistant.')
agent.start_chat()

Once started, you'll see this friendly message:

👋 Welcome! Press 'EXIT' to quit the chat at any time.

Feel free to chat with the bot, ask it to send messages, or perform any task you've configured in the metadata. When you're done, simply type EXIT to end the session with a friendly goodbye! 👋

For yfinance demo, please see here

You can also access this notebook.


📖 How it Works

  1. Intent Detection: The agent listens for specific trigger words (like "send a message" or "set a demo") from user input and matches them against the triggers defined in metadata.json.

  2. API Calls: When an intent is detected (e.g., sending an SMS), it calls the corresponding API (like Twilio's SMS API) and logs the event in the event_stream.

  3. Dynamic Functions: Adding a new API or intent is as simple as updating the metadata.json file and registering the new API in list_of_apis.py. No need to modify core logic! 🚀


🛠️ Extend and Customize

You can easily extend WYN-Agent-X by adding new API calls or intents:

  1. Update metadata.json with new API information and trigger words:

    {
        "send_email": {
            "trigger_word": ["send email", "notify via email"],
            "sample_payload": {"email": "string", "subject": "string"},
            "prerequisite": null
        }
    }
    
  2. Register your new API in list_of_apis.py with a simple decorator:

    @register_function("send_sms")
     def send_sms(payload: Dict[str, str], secrets: Dict[str, str], event_stream: list) -> Dict[str, Any]:
        # Code to send email goes here!
        pass
    

📜 License

MIT License - Enjoy, use, and extend this project freely! 🥳


👤 Author

Yiqiao Yin

📧 Email: eagle0504@gmail.com

Feel free to reach out if you have any questions, suggestions, or just want to say hi! 😊

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wyn_agent_x-0.4.15.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wyn_agent_x-0.4.15-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file wyn_agent_x-0.4.15.tar.gz.

File metadata

  • Download URL: wyn_agent_x-0.4.15.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.13 Windows/10

File hashes

Hashes for wyn_agent_x-0.4.15.tar.gz
Algorithm Hash digest
SHA256 4a178f9b387d04fedef5a53a4edc14e2ad14e56a9383d81ba4b1d1a31e373f21
MD5 f86de8739fe0d80b92204c0ab2b17761
BLAKE2b-256 7bc0fc39c9311282cc14ee375b6347ceef16e6dfb77de78dff874ba216354f62

See more details on using hashes here.

File details

Details for the file wyn_agent_x-0.4.15-py3-none-any.whl.

File metadata

  • Download URL: wyn_agent_x-0.4.15-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.13 Windows/10

File hashes

Hashes for wyn_agent_x-0.4.15-py3-none-any.whl
Algorithm Hash digest
SHA256 2aab2eebc45e1b18035bd530d2399c37be1e48cf3615bb476298da73b76c2140
MD5 2fb1ae3ca7b6bdda9086b9a3fb8f1118
BLAKE2b-256 ec4299ecccbf2dfb00ee0cf9abac88599c2dce3ed2bfc5dac60f68bde63377c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page