field "credential" not yet prepared so type is still a ForwardRef, you might need to call PowerBIDataset.update_forward_refs()
Labels: name: area: agent, name: auto:bug

### System Info

Hello Team,
I am using the below post from Langchain in order to use PowerBIToolkit for connecting to the dataset and tables in it. However I am not able to execute the code. 

https://python.langchain.com/docs/integrations/toolkits/powerbi

I have also gone through an issue raised in this repository which resides here:
https://github.com/langchain-ai/langchain/issues/4325

But not able to pass through this issue. Still looks blocker to me as I am not able to proceed with this integration.

I am using this object which is trying to use the default credentials for the client:

ds = PowerBIDataset(
    dataset_id="aec82374-5442-416f-849b-*********",
    table_names=["ProductsTable"],
    credential=DefaultAzureCredential(
        managed_identity_client_id="678e6145-8917-49a2-********"),
)

Please suggest...

Error:     
**ds = PowerBIDataset(
         ^^^^^^^^^^^^^^^
  File "pydantic\main.py", line 339, in pydantic.main.BaseModel.__init__
  File "pydantic\main.py", line 1076, in pydantic.main.validate_model
  File "pydantic\fields.py", line 860, in pydantic.fields.ModelField.validate
pydantic.errors.ConfigError: field "credential" not yet prepared so type is still a ForwardRef, you might need to call PowerBIDataset.update_forward_refs().**


### Who can help?

_No response_

### Information

- [ ] The official example notebooks/scripts
- [ ] My own modified scripts

### Related Components

- [ ] LLMs/Chat Models
- [ ] Embedding Models
- [ ] Prompts / Prompt Templates / Prompt Selectors
- [ ] Output Parsers
- [ ] Document Loaders
- [ ] Vector Stores / Retrievers
- [ ] Memory
- [X] Agents / Agent Executors
- [X] Tools / Toolkits
- [ ] Chains
- [ ] Callbacks/Tracing
- [ ] Async

### Reproduction

from langchain.agents.agent_toolkits import create_pbi_agent
from langchain.agents.agent_toolkits import PowerBIToolkit
from langchain.utilities.powerbi import PowerBIDataset
from langchain.chat_models import ChatOpenAI
from langchain.agents import AgentExecutor
from azure.identity import DefaultAzureCredential
from dotenv import dotenv_values
import os
from azure.core.credentials import TokenCredential

config = dotenv_values('.env')
os.environ["OPENAI_API_KEY"] = config["OPENAI_API_KEY"]


fast_llm = ChatOpenAI(
    temperature=0.5, max_tokens=1000, model_name="gpt-3.5-turbo", verbose=True
)
smart_llm = ChatOpenAI(temperature=0, max_tokens=100,
                       model_name="gpt-4", verbose=True)

ds = PowerBIDataset(
    dataset_id="aec82374-5442-416f-849b-$$$$$$$$$",
    table_names=["ProductsTable"],
    credential=DefaultAzureCredential(
        managed_identity_client_id="678e6145-8917-49a2-bdcf-******"), # Client Id for Azure Application
)
ds.update_forward_refs()
toolkit = PowerBIToolkit(
    powerbi=ds,
    llm=fast_llm,
)

agent_executor = create_pbi_agent(
    llm=fast_llm,
    toolkit=toolkit,
    verbose=True,
)

agent_executor.run("How many records are in ProductsTable?")


### Expected behavior

Should be able to query the table present in the dataset