Metadata-Version: 2.1
Name: andeplane-ai
Version: 0.5.2
Summary: A set of AI tools for working with Cognite Data Fusion in Python.
License: MIT
Author: Anders Hafreager
Author-email: anders.hafreager@cognite.com
Requires-Python: >=3.9
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: regex (>=2022.10.31)
Description-Content-Type: text/markdown

# cognite-ai

A set of AI tools for working with CDF in Python.

## MemoryVectorStore

Store and query vector embeddings created from CDF. This can enable a bunch of use cases where the number of vectors aren't that big.

Install the package

```
%pip install cognite-ai
```

Then you can create vectors from text (both multiple lines or a list of strings) like this

```

from cognite.ai import MemoryVectorStore
from cognite.client import CogniteClient

client = CogniteClient()
vector_store = MemoryVectorStore(client)

vector_store.store_text("Hi, I am a software engineer working for Cognite.")
vector_store.store_text("The moon is orbiting the earth, which is orbiting the sun.")
vector_store.store_text("Coffee can be a great way to stay awake.")

vector_store.query_text("I am tired, what can I do?")
```

## Smart data frames

Chat with your data using LLMs. Built on top of [PandasAI](https://docs.pandas-ai.com/en/latest/) version 2.2.15. If you have loaded data into a Pandas dataframe, you can run

Install the package

```
%pip install cognite-ai
```

Chat with your data

```
from cognite.client import CogniteClient
from cognite.ai import load_pandasai

client = CogniteClient()
SmartDataframe, SmartDatalake, Agent = await load_pandasai()

workorders_df = client.raw.rows.retrieve_dataframe("tutorial_apm", "workorders", limit=-1)
workitems_df = client.raw.rows.retrieve_dataframe("tutorial_apm", "workitems", limit=-1)
workorder2items_df = client.raw.rows.retrieve_dataframe("tutorial_apm", "workorder2items", limit=-1)
workorder2assets_df = client.raw.rows.retrieve_dataframe("tutorial_apm", "workorder2assets", limit=-1)
assets_df = client.raw.rows.retrieve_dataframe("tutorial_apm", "assets", limit=-1)

smart_lake_df = SmartDatalake([workorders_df, workitems_df, assets_df, workorder2items_df, workorder2assets_df], cognite_client=client)
smart_lake_df.chat("Which workorders are the longest, and what work items do they have?")


s_workorders_df = SmartDataframe(workorders_df, cognite_client=client)
s_workorders_df.chat('Which 5 work orders are the longest?')
```

Configure LLM parameters

```
params = {
    "model": "gpt-35-turbo",
    "temperature": 0.5
}

s_workorders_df = SmartDataframe(workorders_df, cognite_client=client, params=params)
```

## Pandas AI agent

We can also

```python
from cognite.client import CogniteClient
from cognite.ai import load_pandasai

client = CogniteClient()
SmartDataframe, SmartDatalake, Agent = await load_pandasai()

# Create example data
sales_by_country_df = pd.DataFrame({
    "country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],
    "revenue": [5000, 3200, 2900, 4100, 2300, 2100, 2500, 2600, 4500, 7000]
})

agent = Agent(sales_by_country_df, cognite_client=client)

print(agent.chat("Which are the top 5 countries by sales?"))
```

