Skip to main content

No project description provided

Project description

dowse

dowse, a python library for building natural language agents that can interpret and execute commands.

Test Package version Supported Python versions


Documentation: https://dowse.empyrealsdk.com

Source Code: https://github.com/empyrealapp/dowse


Dowse is a Python library that enables you to build intelligent agents capable of:

  • Parsing natural language commands and questions
  • Classifying inputs into different types (e.g. commands vs questions)
  • Executing structured commands based on natural language requests
  • Responding to user queries with relevant information
  • Building complex pipelines for command processing

Key Features

  • Natural Language Processing: Convert human language into structured commands
  • Flexible Pipeline Architecture: Build custom processing flows with branching logic
  • Built-in Command Handlers: Ready-to-use handlers for common operations
  • Extensible Design: Easy to add new command types and handlers
  • Async Support: Built for high-performance async/await operations

Requirements

dowse is built utilizing the following libraries:

Installation

pip install dowse

Quickstart

Dowse enables you to quickly build intelligent agents by abstracting the complexity of state management, type safety, and async operations.

The following pipeline classifies tweets as either a command or a question, and then executes a handler based on the classification.

import asyncio
import os
import logging
from enum import StrEnum
from typing import Literal

from eth_rpc import set_alchemy_key

from dowse import Pipeline
from dowse.impls.basic.llms import BasicTweetClassifier, BasicTwitterCommands, BasicTwitterQuestion
from dowse.impls.basic.effects import Printer
from dowse.impls.basic.source import TwitterMock
from dowse.models import Tweet

logging.getLogger("dowse").setLevel(logging.DEBUG)
set_alchemy_key(os.environ["ALCHEMY_KEY"])


class Classifications(StrEnum):
    """A class that defines the different classifications that can be made by the pipeline."""

    COMMANDS = "commands"
    QUESTION = "question"


async def amain():
    # create a pipeline that classifiers commands as either a command or a question.
    pipeline = Pipeline[Tweet, Tweet, Classifications](
        # classifies the request as one of the Classifications
        classifier=BasicTweetClassifier,
        # a handler that executes each classification
        handlers={
            # commands are consumed by the BasicTwitterCommands operator
            "commands": BasicTwitterCommands.add_effect(Printer(prefix="COMMANDS")),
            # questions are consumed by the BasicTwitterQuestion operator
            "question": BasicTwitterQuestion.add_effects([Printer(prefix="QUESTION")]),
        },
        # the source that will emit the data that is consumed by the pipeline
        source=TwitterMock(),
    )

    # process a single event
    result = await pipeline.process(
        # the input is a tweet, which then gets handled by the Pipeline
        Tweet(
            id=1684298214198108160,
            content="swap $300 for $UNI and then send half of it to @vitalikbuterin",
            creator_id=12,
            creator_name="@jack",
        ),
    )

    # run the pipeline for 3 executions, with a minimum of 120 seconds between each execution
    # this pulls data from the source and processes it
    await pipeline.run(max_executions=3, iteration_min_time=120)


if __name__ == "__main__":
    asyncio.run(amain())

Tests

poetry install
poetry run pytest

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

dowse-0.1.6.post1.tar.gz (31.2 kB view details)

Uploaded Source

Built Distribution

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

dowse-0.1.6.post1-py3-none-any.whl (55.8 kB view details)

Uploaded Python 3

File details

Details for the file dowse-0.1.6.post1.tar.gz.

File metadata

  • Download URL: dowse-0.1.6.post1.tar.gz
  • Upload date:
  • Size: 31.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dowse-0.1.6.post1.tar.gz
Algorithm Hash digest
SHA256 c9bddf24ca4df52366d08c96ed7c26c1afe88822cf8a6c9b1c5928b57930729c
MD5 7b428a92da47c66994049df1d882709d
BLAKE2b-256 0e6198c0ed9d84d24244ca4b83b00829fb438892e961bf9a6a24e37e384ff074

See more details on using hashes here.

File details

Details for the file dowse-0.1.6.post1-py3-none-any.whl.

File metadata

  • Download URL: dowse-0.1.6.post1-py3-none-any.whl
  • Upload date:
  • Size: 55.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dowse-0.1.6.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 bddcab521aec962688fe90e67558717cb3281571c4d6855b7877a4328c25286b
MD5 dbae4414924aef2a4cdb1800f5c61ffe
BLAKE2b-256 60a24125097649b9a4b3bce3044cc1dd23198df77311f788bfc70dd234dde8d3

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