bedrock-tools


Namebedrock-tools JSON
Version 0.1.1 PyPI version JSON
download
home_pagehttps://github.com/jritsema/bedrock-tools
SummaryA small Python library that simplifies Amazon Bedrock Converse API function calling (i.e., tool use).
upload_time2024-10-03 21:46:56
maintainerNone
docs_urlNone
authorJohn Ritsema
requires_python>=3.11
licenseNone
keywords ai genai bedrock tools function-calling
VCS
bugtrack_url
requirements boto3 pydantic twine
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # bedrock-tools

A small Python library that simplifies [Amazon Bedrock Converse API function calling](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html) (i.e., tool use).

This library reduces the boilerplate code needed to integrate native Python functions with the Amazon Bedrock Converse API, making it easier to create powerful, tool-augmented conversational AI applications.


### Usage Example

```sh
pip install bedrock-tools
```

```python
from bedrock_tools import BedrockTools

# define native functions as tools (using type annotations)

def add_numbers(a: int, b: int) -> int:
    """Add two numbers together."""
    return a + b


def greet(name: str) -> str:
    """Greet a person by name."""
    return f"Hello, {name}!"


def get_weather(city: str, state: str) -> dict:
    """Get the weather for a location."""
    return {
        "city": city,
        "state": state,
        "temperature": "75°F",
        "condition": "Partly Cloudy",
    }

# setup
tools = BedrockTools()
tools.add_function(add_numbers)
tools.add_function(greet)
tools.add_function(get_weather)

# Use the config in your Bedrock Converse API call
response = bedrock.converse(
    modelId=model_id,
    toolConfig=tools.get_tool_config()
    messages=messages,
)

# When you receive a toolUse from the API, invoke the tool
if "toolUse" in content_block:
    tool_results.append(tools.invoke(content_block["toolUse"]))

message = {"role": "user", "content": tool_results}
```


Here's an example (from the [Bedrock Converse API docs](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use-examples.html)) with and without the library:

![alt text](img/image.png)

![alt text](img/image-2.png)


## Notes

Currently supports function parameters of type:

- scalar
    - str -> string
    - int -> integegr
    - bool -> boolean
    - float -> number
- list
    - str -> string
    - int -> integer
    - bool -> boolean
    - float -> number
- dict -> object


## Development

```
 Choose a make command to run

  init      run this once to initialize a new python project
  install   install project dependencies
  start     run local project
  test      run unit tests
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jritsema/bedrock-tools",
    "name": "bedrock-tools",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "ai genai bedrock tools function-calling",
    "author": "John Ritsema",
    "author_email": "john_ritsema@yahoo.com",
    "download_url": "https://files.pythonhosted.org/packages/bf/02/a6ddd12fe597f3faf2240f72bc68698245a9dc5089f26478d2e65e6aedd5/bedrock-tools-0.1.1.tar.gz",
    "platform": null,
    "description": "# bedrock-tools\n\nA small Python library that simplifies [Amazon Bedrock Converse API function calling](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html) (i.e., tool use).\n\nThis library reduces the boilerplate code needed to integrate native Python functions with the Amazon Bedrock Converse API, making it easier to create powerful, tool-augmented conversational AI applications.\n\n\n### Usage Example\n\n```sh\npip install bedrock-tools\n```\n\n```python\nfrom bedrock_tools import BedrockTools\n\n# define native functions as tools (using type annotations)\n\ndef add_numbers(a: int, b: int) -> int:\n    \"\"\"Add two numbers together.\"\"\"\n    return a + b\n\n\ndef greet(name: str) -> str:\n    \"\"\"Greet a person by name.\"\"\"\n    return f\"Hello, {name}!\"\n\n\ndef get_weather(city: str, state: str) -> dict:\n    \"\"\"Get the weather for a location.\"\"\"\n    return {\n        \"city\": city,\n        \"state\": state,\n        \"temperature\": \"75\u00b0F\",\n        \"condition\": \"Partly Cloudy\",\n    }\n\n# setup\ntools = BedrockTools()\ntools.add_function(add_numbers)\ntools.add_function(greet)\ntools.add_function(get_weather)\n\n# Use the config in your Bedrock Converse API call\nresponse = bedrock.converse(\n    modelId=model_id,\n    toolConfig=tools.get_tool_config()\n    messages=messages,\n)\n\n# When you receive a toolUse from the API, invoke the tool\nif \"toolUse\" in content_block:\n    tool_results.append(tools.invoke(content_block[\"toolUse\"]))\n\nmessage = {\"role\": \"user\", \"content\": tool_results}\n```\n\n\nHere's an example (from the [Bedrock Converse API docs](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use-examples.html)) with and without the library:\n\n![alt text](img/image.png)\n\n![alt text](img/image-2.png)\n\n\n## Notes\n\nCurrently supports function parameters of type:\n\n- scalar\n    - str -> string\n    - int -> integegr\n    - bool -> boolean\n    - float -> number\n- list\n    - str -> string\n    - int -> integer\n    - bool -> boolean\n    - float -> number\n- dict -> object\n\n\n## Development\n\n```\n Choose a make command to run\n\n  init      run this once to initialize a new python project\n  install   install project dependencies\n  start     run local project\n  test      run unit tests\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A small Python library that simplifies Amazon Bedrock Converse API function calling (i.e., tool use).",
    "version": "0.1.1",
    "project_urls": {
        "Homepage": "https://github.com/jritsema/bedrock-tools"
    },
    "split_keywords": [
        "ai",
        "genai",
        "bedrock",
        "tools",
        "function-calling"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf02a6ddd12fe597f3faf2240f72bc68698245a9dc5089f26478d2e65e6aedd5",
                "md5": "83ad011e183c6f9c3909512d9be6beb7",
                "sha256": "85bb2a50a3171e09c613ac64a4fbab8ef4ec0f22c8ef036b4106e4a13dde23be"
            },
            "downloads": -1,
            "filename": "bedrock-tools-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "83ad011e183c6f9c3909512d9be6beb7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 3629,
            "upload_time": "2024-10-03T21:46:56",
            "upload_time_iso_8601": "2024-10-03T21:46:56.359307Z",
            "url": "https://files.pythonhosted.org/packages/bf/02/a6ddd12fe597f3faf2240f72bc68698245a9dc5089f26478d2e65e6aedd5/bedrock-tools-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-03 21:46:56",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jritsema",
    "github_project": "bedrock-tools",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "boto3",
            "specs": []
        },
        {
            "name": "pydantic",
            "specs": []
        },
        {
            "name": "twine",
            "specs": []
        }
    ],
    "lcname": "bedrock-tools"
}
        
Elapsed time: 0.67839s