# Ask Amazon Bedrock
Converse with your favorite [Amazon Bedrock](https://aws.amazon.com/bedrock/) large language model from the command line.
<p>
<img width="1000" src="https://raw.githubusercontent.com/awslabs/ask-bedrock/main/README.svg">
</p>
This tool is a wrapper around the low-level Amazon Bedrock APIs and [Langchain](https://python.langchain.com/docs/integrations/llms/bedrock). Its main added value is that it locally persists AWS account and model configuration to enable quick and easy interaction.
## Installation
⚠️ Requires Python >= 3.9
⚠️ Requires a working AWS CLI setup configured with a profile that allows Amazon Bedrock access. See [CLI documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) for details.
```shell
pip install ask-bedrock
```
You can also build/run this project locally, see [Building and Running Locally](#building-and-running-locally).
## Usage
### Activating models
Before you can use this command line tool, you need to [request model access through the AWS Console](https://console.aws.amazon.com/bedrock/home#/modelaccess) in a region where Bedrock is available: Switch to the region where you want to run Bedrock, go to ”Model access“, click “Edit”, activate the models you wish to use, and then click “Save changes”.
### Invocation
To start a conversation, simply enter the following command:
```shell
ask-bedrock converse
```
If you don't need a conversation, you can get a simple request-response using:
```shell
ask-bedrock prompt "What's up?"
```
Upon the first run, you will be led through a configuration flow. To learn more about configuration options, see the [Configuration](#configuration) section below.
If you’re fully configured, the tool will show you a `>>>` prompt and you can start interacting with the configured model.
Multi-line prompts can be wrapped into `<<< >>>` blocks.
To end your interaction, hit `Ctrl + D`. Note that the conversation will be lost.
You can also use a single prompt with a simple request-response:
```
ask-bedrock prompt "complete this sentence: One small step for me"
```
### Pricing
Note that using Ask Amazon Bedrock incurs AWS fees. For more information, see [Amazon Bedrock pricing](https://aws.amazon.com/bedrock/pricing/). Consider using a dedicated AWS account and [AWS Budgets](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) to control costs.
## Configuration
*Ask Amazon Bedrock* stores your user configuration in `$HOME/.config/ask-bedrock/config.yaml`. This file may contain several sets of configuration (contexts). For instance, you can use contexts to switch between different models. Use the `--context` parameter to select the context you'd like to use. The default context is `default`.
If no configuration is found for a selected context, a new one is created. If you want to change an existing config, use
```shell
ask-bedrock configure --context mycontext
```
You can also create or edit the configuration file yourself in `$HOME/.config/ask-bedrock/config.yaml`:
```yaml
contexts:
default:
region: "" # an AWS region where you have activated Bedrock
aws_profile: "" # a profile from your ~/.aws/config file
model_id: "" # a Bedrock model, e.g. "ai21.j2-ultra-v1"
model_params: "{}" # a JSON object with parameters for the selected model
```
### Model parameters
This JSON is passed to Langchain during client setup (as `model_kwargs`). The schema depends on the model that is used. Have a look at the [examples](model_params_examples.md).
If you want to configure multiple lines, model parameters can be wrapped in `<<< >>>`.
## Building and Running Locally
```
pip install build
python -m build
python ask_bedrock/main.py converse
```
## Feedback
As this tool is still early stage, we are very interested in hearing about your experience. Please take one minute to take a little survey: **https://pulse.aws/survey/GTRWNHT1**
## Troubleshooting
**Q:** The model responses are cut off mid-sentence.
**A:** Configure the model to allow for longer response. Use model parameters (see above) for this. Claude for example would take the following model parameters: `{"max_tokens_to_sample": 3000}`
---
**Q**: I'm getting an error that is not listed here.
**A**: Use the `--debug` option to find out more about the error. If you cannot solve it, create an issue.
## Security
See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.
## License
This project is licensed under the Apache-2.0 License.
Raw data
{
"_id": null,
"home_page": "https://github.com/awslabs/ask-bedrock",
"name": "ask-bedrock",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "ask-bedrock, GenAI, Bedrock, AWS",
"author": null,
"author_email": "Ulrich Hinze <uhinze@amazon.de>, Alexander G\u00fcnsche <lxg@amazon.de>",
"download_url": "https://files.pythonhosted.org/packages/b6/3d/5492ebf5632e1b52c8e094e657fec60ff5283dd0c33df4c8741bfaa36848/ask_bedrock-0.2.0.tar.gz",
"platform": null,
"description": "# Ask Amazon Bedrock\n\nConverse with your favorite [Amazon Bedrock](https://aws.amazon.com/bedrock/) large language model from the command line.\n\n<p>\n <img width=\"1000\" src=\"https://raw.githubusercontent.com/awslabs/ask-bedrock/main/README.svg\">\n</p>\n\nThis tool is a wrapper around the low-level Amazon Bedrock APIs and [Langchain](https://python.langchain.com/docs/integrations/llms/bedrock). Its main added value is that it locally persists AWS account and model configuration to enable quick and easy interaction.\n\n## Installation\n\n\u26a0\ufe0f Requires Python >= 3.9\n\n\u26a0\ufe0f Requires a working AWS CLI setup configured with a profile that allows Amazon Bedrock access. See [CLI documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) for details.\n\n\n```shell\npip install ask-bedrock\n```\n\nYou can also build/run this project locally, see [Building and Running Locally](#building-and-running-locally).\n\n## Usage\n\n### Activating models\n\nBefore you can use this command line tool, you need to [request model access through the AWS Console](https://console.aws.amazon.com/bedrock/home#/modelaccess) in a region where Bedrock is available: Switch to the region where you want to run Bedrock, go to \u201dModel access\u201c, click \u201cEdit\u201d, activate the models you wish to use, and then click \u201cSave changes\u201d.\n\n### Invocation\n\nTo start a conversation, simply enter the following command:\n\n```shell\nask-bedrock converse\n```\n\nIf you don't need a conversation, you can get a simple request-response using:\n\n```shell\nask-bedrock prompt \"What's up?\"\n```\n\nUpon the first run, you will be led through a configuration flow. To learn more about configuration options, see the [Configuration](#configuration) section below.\n\nIf you\u2019re fully configured, the tool will show you a `>>>` prompt and you can start interacting with the configured model.\n\nMulti-line prompts can be wrapped into `<<< >>>` blocks.\n\nTo end your interaction, hit `Ctrl + D`. Note that the conversation will be lost.\n\nYou can also use a single prompt with a simple request-response:\n```\nask-bedrock prompt \"complete this sentence: One small step for me\"\n```\n\n### Pricing\n\nNote that using Ask Amazon Bedrock incurs AWS fees. For more information, see [Amazon Bedrock pricing](https://aws.amazon.com/bedrock/pricing/). Consider using a dedicated AWS account and [AWS Budgets](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) to control costs.\n\n## Configuration\n\n*Ask Amazon Bedrock* stores your user configuration in `$HOME/.config/ask-bedrock/config.yaml`. This file may contain several sets of configuration (contexts). For instance, you can use contexts to switch between different models. Use the `--context` parameter to select the context you'd like to use. The default context is `default`.\n\nIf no configuration is found for a selected context, a new one is created. If you want to change an existing config, use\n\n```shell\nask-bedrock configure --context mycontext\n```\n\nYou can also create or edit the configuration file yourself in `$HOME/.config/ask-bedrock/config.yaml`:\n\n```yaml\ncontexts:\n default:\n region: \"\" # an AWS region where you have activated Bedrock\n aws_profile: \"\" # a profile from your ~/.aws/config file\n model_id: \"\" # a Bedrock model, e.g. \"ai21.j2-ultra-v1\"\n model_params: \"{}\" # a JSON object with parameters for the selected model\n```\n\n### Model parameters\n\nThis JSON is passed to Langchain during client setup (as `model_kwargs`). The schema depends on the model that is used. Have a look at the [examples](model_params_examples.md).\n\nIf you want to configure multiple lines, model parameters can be wrapped in `<<< >>>`.\n\n## Building and Running Locally\n\n```\npip install build\npython -m build\npython ask_bedrock/main.py converse\n```\n\n## Feedback\n\nAs this tool is still early stage, we are very interested in hearing about your experience. Please take one minute to take a little survey: **https://pulse.aws/survey/GTRWNHT1**\n\n\n## Troubleshooting\n\n**Q:** The model responses are cut off mid-sentence.\n\n**A:** Configure the model to allow for longer response. Use model parameters (see above) for this. Claude for example would take the following model parameters: `{\"max_tokens_to_sample\": 3000}`\n\n---\n\n**Q**: I'm getting an error that is not listed here.\n\n**A**: Use the `--debug` option to find out more about the error. If you cannot solve it, create an issue.\n\n## Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Converse with your favorite Amazon Bedrock LLM from the command line.",
"version": "0.2.0",
"project_urls": {
"Homepage": "https://github.com/awslabs/ask-bedrock"
},
"split_keywords": [
"ask-bedrock",
" genai",
" bedrock",
" aws"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "52599eab3f9374bddb6270cf6294e4f650c636bec323064de6c6ce0aac9c0df2",
"md5": "ca786951e3482a03a34edffcc1d3ae0d",
"sha256": "10776ea1641b3bf065eb6450d48ca2cbf237fc9f3f5f5b8a367246af1a519b5e"
},
"downloads": -1,
"filename": "ask_bedrock-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ca786951e3482a03a34edffcc1d3ae0d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 10873,
"upload_time": "2024-06-20T07:33:43",
"upload_time_iso_8601": "2024-06-20T07:33:43.752173Z",
"url": "https://files.pythonhosted.org/packages/52/59/9eab3f9374bddb6270cf6294e4f650c636bec323064de6c6ce0aac9c0df2/ask_bedrock-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b63d5492ebf5632e1b52c8e094e657fec60ff5283dd0c33df4c8741bfaa36848",
"md5": "5732385d6b6c4f04fb34c57bc407ed30",
"sha256": "a2dbdea6ccc1bebb15de0f7ace92a21fd85c357e2711f20d3b4ba3d9764a50ac"
},
"downloads": -1,
"filename": "ask_bedrock-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "5732385d6b6c4f04fb34c57bc407ed30",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 10060,
"upload_time": "2024-06-20T07:33:44",
"upload_time_iso_8601": "2024-06-20T07:33:44.672705Z",
"url": "https://files.pythonhosted.org/packages/b6/3d/5492ebf5632e1b52c8e094e657fec60ff5283dd0c33df4c8741bfaa36848/ask_bedrock-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-20 07:33:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "awslabs",
"github_project": "ask-bedrock",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ask-bedrock"
}