Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,10 @@
.DS_Store
webapp/.env
*.pyc

# Segmentation use-cases
# langserve/packages/bq-agent/bq_agent/dev

# Original agent.py
langserve/packages/bq-agent/bq_agent/agent_original.py

71 changes: 71 additions & 0 deletions langserve/packages/bq-agent/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

# csv-agent

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title of the README.md file should be updated to reflect the correct package name. Consider changing 'csv-agent' to 'bq-agent'.


This template uses a [pandas agent](https://python.langchain.com/docs/integrations/toolkits/pandas) with tools [BigQuery DataFrames](https://cloud.google.com/python/docs/reference/bigframes/latest) to read a BigQuery table for interaction (question-answering) with tabular data.

## Environment Setup

Set the `OPENAI_API_KEY` environment variable to access the OpenAI models.


## Usage

To use this package, you should first have the LangChain CLI installed:

```shell
pip install -U langchain-cli
```

To create a new LangChain project and install this as the only package, you can do:

```shell
langchain app new my-app --package bq-agent
```

If you want to add this to an existing project, you can just run:

```shell
langchain app add bq-agent
```

And add the following code to your `server.py` file:
```python

from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent


add_routes(app, csv_agent_chain, path="/bq-agent")
```

(Optional) Let's now configure LangSmith.
LangSmith will help us trace, monitor and debug LangChain applications.
LangSmith is currently in private beta, you can sign up [here](https://smith.langchain.com/).
If you don't have access, you can skip this section


```shell
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project> # if not specified, defaults to "default"
```

If you are inside this directory, then you can spin up a LangServe instance directly by:

```shell
langchain serve
```

This will start the FastAPI app with a server is running locally at
[http://localhost:8000](http://localhost:8000)

We can see all templates at [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)

We can access the playground at [http://127.0.0.1:8000/bq-agent/playground](http://127.0.0.1:8000/bq-agent/playground)

We can access the template from code with:

```python
from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/csv-agent")
```
3 changes: 3 additions & 0 deletions langserve/packages/bq-agent/bq_agent/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from bq_agent.agent import agent_executor

__all__ = ["agent_executor"]
31 changes: 31 additions & 0 deletions langserve/packages/bq-agent/bq_agent/agent.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from pathlib import Path

import pandas as pd
from langchain.agents import AgentExecutor, OpenAIFunctionsAgent
# from langchain.chat_models import ChatOpenAI
# from langchain.embeddings import OpenAIEmbeddings
# from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
# from langchain.pydantic_v1 import BaseModel, Field
# from langchain.tools.retriever import create_retriever_tool
# from langchain.vectorstores import FAISS
# from langchain_experimental.tools import PythonAstREPLTool
import bigframes.pandas as bpd
from langchain.agents.agent_types import AgentType
from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain_openai import ChatOpenAI
from langchain_openai import OpenAI



# Load data
df = bpd.read_gbq("SELECT name, job, created, transactions, revenue, permission, crm_id, FROM `annular-form-389809.merged_data.crm_ga4`LIMIT 45").to_pandas()

# Defining agent
agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True)

# Default prompt
agent.run("How many rows are there in this dataframe?")

# Defining agent executor
agent_executor = AgentExecutor(
agent=agent)
Binary file not shown.
Loading