No project description provided
Project description
dowse
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.models 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[Tweet, Tweet, Literal["commands", "question"]](
classifier=BasicTweetClassifier,
# create a handler for 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")]),
},
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
Release history Release notifications | RSS feed
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.tar.gz
(30.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
dowse-0.1.6-py3-none-any.whl
(55.0 kB
view details)
File details
Details for the file dowse-0.1.6.tar.gz.
File metadata
- Download URL: dowse-0.1.6.tar.gz
- Upload date:
- Size: 30.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93fcd49a0cf4eedafea18e0e520c3ace5e5c9bc7dd67d8bc3e81d8f729439915
|
|
| MD5 |
146ae2e274aeb7e8afb18bb45bc2202f
|
|
| BLAKE2b-256 |
7b2042564410f7e7d6fd7b3f6e8ca571e2e5149bfccbece50bebc18d1b7e3200
|
File details
Details for the file dowse-0.1.6-py3-none-any.whl.
File metadata
- Download URL: dowse-0.1.6-py3-none-any.whl
- Upload date:
- Size: 55.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e49d7e609aaf2ae4077718f1349c77eef21ad00a896d7927c99ebfd69e60569a
|
|
| MD5 |
53cc0de3acf254f4001f3b14a47528d7
|
|
| BLAKE2b-256 |
1afa112f484f5ff06c4103095e3c67a4e7ee4992a54d28690332d7e3ba77b783
|