From 46c963601210d0f1793dd80bb7926c190e6cae13 Mon Sep 17 00:00:00 2001 From: Eduard van Valkenburg Date: Mon, 24 Apr 2023 19:42:38 +0200 Subject: [PATCH] small constructor change and updated notebook (#3426) small change in the pydantic definitions, same api. updated notebook with right constructure and added few shot example --- .../agents/toolkits/examples/powerbi.ipynb | 60 +++++++++++++++++-- langchain/utilities/powerbi.py | 4 +- 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/docs/modules/agents/toolkits/examples/powerbi.ipynb b/docs/modules/agents/toolkits/examples/powerbi.ipynb index 1e26a03e85..f1bfc1107e 100644 --- a/docs/modules/agents/toolkits/examples/powerbi.ipynb +++ b/docs/modules/agents/toolkits/examples/powerbi.ipynb @@ -55,14 +55,16 @@ }, "outputs": [], "source": [ - "llm = AzureOpenAI(temperature=0, deployment_name=\"text-davinci-003\", verbose=True)\n", + "fast_llm = AzureOpenAI(temperature=0.5, max_tokens=1000, deployment_name=\"gpt-35-turbo\", verbose=True)\n", + "smart_llm = AzureOpenAI(temperature=0, max_tokens=100, deployment_name=\"gpt-4\", verbose=True)\n", + "\n", "toolkit = PowerBIToolkit(\n", - " powerbi=PowerBIDataset(None, \"\", ['table1', 'table2'], DefaultAzureCredential()), \n", - " llm=llm\n", + " powerbi=PowerBIDataset(dataset_id=\"\", table_names=['table1', 'table2'], credential=DefaultAzureCredential()), \n", + " llm=smart_llm\n", ")\n", "\n", "agent_executor = create_pbi_agent(\n", - " llm=llm,\n", + " llm=fast_llm,\n", " toolkit=toolkit,\n", " verbose=True,\n", ")" @@ -141,6 +143,56 @@ "source": [ "agent_executor.run(\"What unique values are there for dimensions2 in table2\")" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "6fd950e4", + "metadata": {}, + "source": [ + "## Example: add your own few-shot prompts" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87d677f9", + "metadata": {}, + "outputs": [], + "source": [ + "#fictional example\n", + "few_shots = \"\"\"\n", + "Question: How many rows are in the table revenue?\n", + "DAX: EVALUATE ROW(\"Number of rows\", COUNTROWS(revenue_details))\n", + "----\n", + "Question: How many rows are in the table revenue where year is not empty?\n", + "DAX: EVALUATE ROW(\"Number of rows\", COUNTROWS(FILTER(revenue_details, revenue_details[year] <> \"\")))\n", + "----\n", + "Question: What was the average of value in revenue in dollars?\n", + "DAX: EVALUATE ROW(\"Average\", AVERAGE(revenue_details[dollar_value]))\n", + "----\n", + "\"\"\"\n", + "toolkit = PowerBIToolkit(\n", + " powerbi=PowerBIDataset(dataset_id=\"\", table_names=['table1', 'table2'], credential=DefaultAzureCredential()), \n", + " llm=smart_llm,\n", + " examples=few_shots,\n", + ")\n", + "agent_executor = create_pbi_agent(\n", + " llm=fast_llm,\n", + " toolkit=toolkit,\n", + " verbose=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33f4bb43", + "metadata": {}, + "outputs": [], + "source": [ + "agent_executor.run(\"What was the maximum of value in revenue in dollars in 2022?\")" + ] } ], "metadata": { diff --git a/langchain/utilities/powerbi.py b/langchain/utilities/powerbi.py index b185005760..1a60c55a93 100644 --- a/langchain/utilities/powerbi.py +++ b/langchain/utilities/powerbi.py @@ -33,13 +33,13 @@ class PowerBIDataset(BaseModel): If the model is not RLS enabled, this will be ignored. """ - group_id: Optional[str] dataset_id: str table_names: List[str] + group_id: Optional[str] = None credential: Optional[Union[ChainedTokenCredential, InteractiveCredential]] = None token: Optional[str] = None impersonated_user_name: Optional[str] = None - sample_rows_in_table_info: int = Field(1, gt=0, le=10) + sample_rows_in_table_info: int = Field(default=1, gt=0, le=10) aiosession: Optional[aiohttp.ClientSession] = None schemas: Dict[str, str] = Field(default_factory=dict, init=False)