We use essential cookies to make our site work. With your consent, we may also use non-essential cookies to improve user experience and analyze website traffic…

Qwen3-Max-Thinking state-of-the-art reasoning model at your fingertips!

Introducing Tool Calling with LangChain, Search the Web with Tavily and Tool Calling Agents
Published on 2024.07.05 by Oguz Vuruskaner
Introducing Tool Calling with LangChain, Search the Web with Tavily and Tool Calling Agents

In this blog post, we will query for the details of a recently released expansion pack for Elden Ring, a critically acclaimed game released in 2022, using the Tavily tool with the ChatDeepInfra model.

Using this boilerplate, one can automate the process of searching for information with well-written responses. This is a great way to create a chatbot that can interact with users and provide them with the information they need.

Requirements

  • Python 3.8 or higher
  • DeepInfra API Key
  • Tavily API Key

Installation

First, let's create a virtual environment and activate it:

python3 -m venv venv
source venv/bin/activate
copy

Next, install the required packages:

pip install python-dotenv langchain langchain-community
copy

Setting Up the Environment

Before we start, we need to load our DeepInfra API key and Tavily API key. You can get your DeepInfra API key from here. After obtaining the API key, create a .env file in the root directory of your project and add the following line:

DEEPINFRA_API_TOKEN=YOUR_DEEPINFRA_API_KEY
TAVILY_API_KEY=YOUR_TAVILY_API_KEY
copy

Creating a Tool Calling Agent

After installing the required packages and setting up the environment, we can create a LangChain agent that uses the ChatDeepInfra model and the Tavily tool to search for information on the web. The ChatDeepInfra model is a powerful conversational model that can generate human-like responses to user queries. The Tavily tool allows us to search the web for information and retrieve the search results.

Here's the complete Python script to create and run a LangChain agent using the ChatDeepInfra model:

from dotenv import load_dotenv, find_dotenv
from langchain_community.chat_models import ChatDeepInfra

_ = load_dotenv(find_dotenv())

from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_core.prompts import ChatPromptTemplate

model_name = "meta-llama/Meta-Llama-3-70B-Instruct"

if __name__ == "__main__":

    tools = [TavilySearchResults(max_results=1)]
    llm = ChatDeepInfra(
        model = model_name
    )
    prompt = ChatPromptTemplate.from_messages(
        [
            (
                "system",
                "You are a helpful assistant. Make sure to use the tavily_search_results_json tool for information.",
            ),
            ("placeholder", "{chat_history}"),
            ("human", "{input}"),
            ("placeholder", "{agent_scratchpad}"),
        ]
    )

    agent = create_tool_calling_agent(llm, tools, prompt)

    agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, stream_runnable=False)
    question = "Why is the hype for Shadow of the Erdtree so high?"
    result = agent_executor.invoke({"input": question})

    print(result["output"])

    # According to the search results, the new DLC for Elden Ring is called "Shadow of the Erdtree".
copy

One crucial point is to use stream_runnable=False in the AgentExecutor.

Conclusion

Stage is yours now! You can futher extend the agent to include more tools and models to improve your workflows which will be topic for another blog post.

Stay tuned for more updates and happy coding!

Related articles
Function Calling for AI APIs in DeepInfra — How to Extend Your AI with Real-World Logic - Deep InfraFunction Calling for AI APIs in DeepInfra — How to Extend Your AI with Real-World Logic - Deep Infra<p>Modern large language models (LLMs) are incredibly powerful at understanding and generating text, but until recently they were largely static: they could only respond based on patterns in their training data. Function calling changes that. It lets language models interact with external logic — your own code, APIs, utilities, or business systems — while still [&hellip;]</p>
Pricing 101: Token Math & Cost-Per-Completion ExplainedPricing 101: Token Math & Cost-Per-Completion Explained<p>LLM pricing can feel opaque until you translate it into a few simple numbers: input tokens, output tokens, and price per million. Every request you send—system prompt, chat history, RAG context, tool-call JSON—counts as input; everything the model writes back counts as output. Once you know those two counts, the cost of a completion is [&hellip;]</p>
LLM API Provider Performance KPIs 101: TTFT, Throughput & End-to-End GoalsLLM API Provider Performance KPIs 101: TTFT, Throughput & End-to-End Goals<p>Fast, predictable responses turn a clever demo into a dependable product. If you’re building on an LLM API provider like DeepInfra, three performance ideas will carry you surprisingly far: time-to-first-token (TTFT), throughput, and an explicit end-to-end (E2E) goal that blends speed, reliability, and cost into something users actually feel. This beginner-friendly guide explains each KPI [&hellip;]</p>