# Introduction

## What is Bitca?

**Bitca is a framework for building multi-modal** humans**and workflows.**

* **Build** humans**with memory, knowledge, tools and reasoning.**
* **Build teams of** humans **that can work together to solve problems.**
* **Interact with your** humans**and workflows using a beautiful H**uman **UI.**<br>

### Key Features <a href="#key-features" id="key-features"></a>

* Simple & Elegant
* Powerful & Flexible
* Multi-Modal by default
* Multi-Human orchestration
* A beautiful Human UI to chat with your humans
* Humans RAG built-in
* Structured outputs
* Reasoning built-in
* Monitoring & Debugging built-in

### &#x20;Install <a href="#install" id="install"></a>

```sh
// pip install -U bitca
```

### Simple & Elegant <a href="#simple-and-elegant" id="simple-and-elegant"></a>

Bitca Humans are simple and elegant, resulting in minimal, beautiful code.

For example, you can create a web search human in 10 lines of code.

#### Setup <a href="#setup" id="setup"></a>

1

Setup your virtual environment

MacWindows

```bash
python3 -m venv aienv
aienv/scripts/activate
```

2

Install libraries

MacWindows

```bash
pip install -U bitca openai duckduckgo-search
```

3

Export your OpenAI key

Bitca works with most model providers but for these examples let’s use OpenAI.

MacWindows

```bash
setx OPENAI_API_KEY sk-***
```

You can get an API key from [here](https://platform.openai.com/account/api-keys).

4

Run the human

```shell
python web_search.py
```

### [​](https://docs.phidata.com/introduction#powerful-and-flexible)Powerful & Flexible <a href="#powerful-and-flexible" id="powerful-and-flexible"></a>

Bitca humans can use multiple tools and follow instructions to achieve complex tasks.

For example, you can create a finance human with tools to query financial data.

1

Create a finance human

finance\_human.py

```python
from bitca.human import Humans 
from bitca.model.openai import OpenAIChat
from bitca.tools.yfinance import YFinanceTools

finance_human = Human(
    name="Finance Agent",
    model=OpenAIChat(id="gpt-4o"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)],
    instructions=["Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)
finance_human.print_response("Summarize analyst recommendations for NVDA", stream=True)
```

2

Run the human

Install libraries

```shell
pip install yfinance
```

Run the human

```shell
python finance_human.py
```

### [​](https://docs.phidata.com/introduction#multi-modal-by-default)Multi-Modal by default <a href="#multi-modal-by-default" id="multi-modal-by-default"></a>

Bitca humans support text, images, audio and video.

For example, you can create an image human that can understand images and make tool calls as needed

1

Create an image human

image\_human.py

```python
from bitca.human import Human
from bitca.model.openai import OpenAIChat
from bitca.tools.duckduckgo import DuckDuckGo

human= Human(
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGo()],
    markdown=True,
)

human.print_response(
    "Tell me about this image and give me the latest news about it.",
    images=["https://upload.wikimedia.org/wikipedia/commons/b/bf/Krakow_-_Kosciol_Mariacki.jpg"],
    stream=True,
)
```

2

Run the human

```shell
python image_human.py
```

### [​](https://docs.phidata.com/introduction#multi-agent-orchestration)Multi-Human orchestration <a href="#multi-agent-orchestration" id="multi-agent-orchestration"></a>

Bitca humans can work together as a team to achieve complex tasks.

1

Create an human team

human\_team.py

```python
from bitca.human import Human
from bitca.model.openai import OpenAIChat
from bitca.tools.duckduckgo import DuckDuckGo
from bitca.tools.yfinance import YFinanceTools

web_human = Human(
    name="Web Human",
    role="Search the web for information",
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGo()],
    instructions=["Always include sources"],
    show_tool_calls=True,
    markdown=True,
)

finance_human = Human(
    name="Finance Human",
    role="Get financial data",
    model=OpenAIChat(id="gpt-4o"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True)],
    instructions=["Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

human_team = Human(
    team=[web_human, finance_human],
    instructions=["Always include sources", "Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

human_team.print_response("Summarize analyst recommendations and share the latest news for NVDA", stream=True)
```

2

Run the human team

Run the human team

```shell
python human_team.py
```

### [​](https://docs.phidata.com/introduction#continue-reading)Continue reading <a href="#continue-reading" id="continue-reading"></a>

* Chat with your Humans using a beautiful Human UI.
* [More examples](https://docs.phidata.com/more-examples)
* [Monitoring & Debugging](https://docs.phidata.com/monitoring)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.projectbit.ca/getting-started/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
