88from langchain_core .runnables import RunnableConfig
99from langchain_core .messages import AIMessage , ToolMessage , SystemMessage
1010from langchain .tools import tool
11- from tavily import TavilyClient
11+ from tavily import AsyncTavilyClient
1212from copilotkit .langchain import copilotkit_emit_state , copilotkit_customize_config
1313from copilotkit .demos .research_canvas .state import AgentState
1414from copilotkit .demos .research_canvas .model import get_model
@@ -23,7 +23,7 @@ class ResourceInput(BaseModel):
2323def ExtractResources (resources : List [ResourceInput ]): # pylint: disable=invalid-name,unused-argument
2424 """Extract the 3-5 most relevant resources from a search result."""
2525
26- tavily_client = TavilyClient (api_key = os .getenv ("TAVILY_API_KEY" ))
26+ tavily_client = AsyncTavilyClient (api_key = os .getenv ("TAVILY_API_KEY" ))
2727
2828async def search_node (state : AgentState , config : RunnableConfig ):
2929 """
@@ -46,7 +46,7 @@ async def search_node(state: AgentState, config: RunnableConfig):
4646 search_results = []
4747
4848 for i , query in enumerate (queries ):
49- response = tavily_client .search (query )
49+ response = await tavily_client .search (query )
5050 search_results .append (response )
5151 state ["logs" ][i ]["done" ] = True
5252 await copilotkit_emit_state (config , state )
0 commit comments