Skip to main content

No project description provided

Project description

dowse

dowse logo

A powerful library for building natural language agents that can interpret and execute commands.

Overview

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

Installation

# COMING SOON
pip install dowse

Quickstart

import asyncio
import os
import logging
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.interfaces import Tweet

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


async def amain():
    # create a pipeline that classifiers commands as either a command or a question.
    pipeline = Pipeline[Literal["commands", "question"]](
        classifier=BasicTweetClassifier,
        # create a handler for each classification
        handlers={
            # commands are consumed by the BasicTwitterCommands operator
            "commands": BasicTwitterCommands >> Printer(prefix="COMMANDS"),
            # questions are consumed by the BasicTwitterQuestion operator
            "question": BasicTwitterQuestion >> Printer(prefix="QUESTION"),
        },
        source=TwitterMock(),
    )

    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",
        ),
    )

    print(result)

    # 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.2.post1.tar.gz (20.6 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.2.post1-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dowse-0.1.2.post1.tar.gz
  • Upload date:
  • Size: 20.6 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.2.post1.tar.gz
Algorithm Hash digest
SHA256 7c75da7f39f3ac2bb8840e6179efd767a2ef9700db53b94d40c16fd7b853c945
MD5 73a23844f6506ad0ae4dfc82916e7f43
BLAKE2b-256 00e6273b37110a9117539a2d8b7aa7d2b9154d50f1d8d45244a04090864cc1c6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dowse-0.1.2.post1-py3-none-any.whl
  • Upload date:
  • Size: 39.0 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.2.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 187ac3dd03dafc0b2f8d7ecde4523c9a2515464dcf6751bd17ac5067e6b7a0f0
MD5 769e5d92d4eefced078ceb6e0a369fab
BLAKE2b-256 34420a0567e5384dbad33674e1c7128a0f534cfdbeba1e66a9665932bf7e3586

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