Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Read by thought-leaders and decision-makers around the world. Phone Number: +1-650-246-9381 Email: pub@towardsai.net
228 Park Avenue South New York, NY 10003 United States
Website: Publisher: https://towardsai.net/#publisher Diversity Policy: https://towardsai.net/about Ethics Policy: https://towardsai.net/about Masthead: https://towardsai.net/about
Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Founders: Roberto Iriondo, , Job Title: Co-founder and Advisor Works for: Towards AI, Inc. Follow Roberto: X, LinkedIn, GitHub, Google Scholar, Towards AI Profile, Medium, ML@CMU, FreeCodeCamp, Crunchbase, Bloomberg, Roberto Iriondo, Generative AI Lab, Generative AI Lab VeloxTrend Ultrarix Capital Partners Denis Piffaretti, Job Title: Co-founder Works for: Towards AI, Inc. Louie Peters, Job Title: Co-founder Works for: Towards AI, Inc. Louis-François Bouchard, Job Title: Co-founder Works for: Towards AI, Inc. Cover:
Towards AI Cover
Logo:
Towards AI Logo
Areas Served: Worldwide Alternate Name: Towards AI, Inc. Alternate Name: Towards AI Co. Alternate Name: towards ai Alternate Name: towardsai Alternate Name: towards.ai Alternate Name: tai Alternate Name: toward ai Alternate Name: toward.ai Alternate Name: Towards AI, Inc. Alternate Name: towardsai.net Alternate Name: pub.towardsai.net
5 stars – based on 497 reviews

Frequently Used, Contextual References

TODO: Remember to copy unique IDs whenever it needs used. i.e., URL: 304b2e42315e

Resources

Free: 6-day Agentic AI Engineering Email Guide.
Learnings from Towards AI's hands-on work with real clients.
LLM & AI Agent Applications with LangChain and LangGraph — Part 11: Tools
Latest   Machine Learning

LLM & AI Agent Applications with LangChain and LangGraph — Part 11: Tools

Last Updated on January 2, 2026 by Editorial Team

Author(s): Michalzarnecki

Originally published on Towards AI.

LLM & AI Agent Applications with LangChain and LangGraph — Part 11: Tools

Welcome to the next part of the course dedicated to LLM-driven applications development.

In this episode we’ll cover another key building block in the LangChain ecosystem: tools.

Language models are incredibly powerful on their own, but they have one important limitation: they can only rely on what you put into the prompt and on the data they were trained on. That means their knowledge is effectively frozen in time — it reflects the state of the world at the moment the training data was collected.

Tools are how we break out of that limitation.

With tools, we can extend the model’s capabilities so it can perform concrete actions in the outside world — accessing external information, calling APIs, querying databases, triggering business workflows, and more.

What are tools?

In LangChain, tools are simply functions that the model can call.

They can be very small and focused (like a calculator), or much more complex (like Google Search, a database connector, a weather API, or even a full “place an order in a pizza system” flow).

The model decides when it needs a tool, and LangChain enables the full roundtrip:

  1. the model selects the tool
  2. provides the input arguments
  3. LangChain executes the function
  4. the result is returned back to the model

In practice, tools make the model much more useful — because it doesn’t only “talk” 🙂, it can actually do things.

Examples of tools

Here are a few typical examples:

  • Calculator — a classic starter tool. Instead of the model “guessing” math, it calls a precise function. This matters especially in domains that require accuracy, because even flagship models can sometimes struggle with numerical precision (yes, even around the 6th decimal place). Some models also have issues with tasks involving spatial reasoning.
  • Search — a tool that lets the model retrieve information from the internet. This is one of the simplest ways to make LLM-based apps feel current rather than outdated.
  • Databases — databases can also be exposed as tools. For example: integrations with SQL, MongoDB, or Neo4j, so the model can query internal, company-specific data (with the right access control, of course).
  • External APIs — for example: exchange rates, weather forecasts, stock data, shipment tracking, or any other business-critical service.

Thanks to tools, LLM-based applications can be dynamic and up-to-date, instead of relying only on static, training-time knowledge.

How do we create our own tools?

In LangChain you can either use existing integrations or write your own tools.

A custom tool is most often just a Python function decorated with @tool.

You need to define:

  • what parameters it accepts,
  • what it does,
  • what it returns.

The model receives the tool description and can decide on its own when it’s worth calling it.

Why tools matter

Tools are the interface that makes a language model operational — they turn “text generation” into real task execution.

In the next parts I’ll show how to connect tools with agents. But before we go there, let’s look at a few simple, practical examples of using tools in LangChain.

Install and import libraries

Install libraries and load them and also environment variables using code below. We also load environment variables here and create LLM API client under llm variable that will be used in next code samples.

!pip install -q langchain langchain-openai python-dotenv
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv

load_dotenv()

llm
= ChatOpenAI(model="gpt-4o-mini", temperature=0)

Simple tool — calculator

Below we define our first tool which is actually a python function. Tool functions are defined using @tool decorator.

from langchain.tools import tool

@tool
def multiply_numbers(x: int, y: int) -> int:
"""Multiplies two integers"""
return x * y

print(multiply_numbers.invoke({"x": 6, "y": 7}))

output:

42

Combine tools with LLM

Now lets add tools to LLM call by using initialize_agent and passing tools array that contains multiply_numbers tool from previous code snippet.

from langchain_classic.agents import initialize_agent, AgentType

tools = [multiply_numbers]

agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)

# the model will decide itself that it needs to use multiply_numbers
agent.run("What is twice the number of people on Earth?")

output:

> Entering new AgentExecutor chain...
Thought: To find twice the number of people on Earth, I need to know the current estimated population. As of 2023, the estimated global population is around 8 billion. Therefore, I will multiply 8 billion by 2.

Action:
```
{
"action": "multiply_numbers",
"action_input": {
"x": 8000000000,
"y": 2
}
}
```

Observation: 16000000000
Thought:I have calculated twice the number of people on Earth, which is 16 billion.

Action:
```
{
"action": "Final Answer",
"action_input": "Twice the number of people on Earth is 16 billion."
}
```


> Finished chain.
'Twice the number of people on Earth is 16 billion.'

Another tool — simple knowledge database

Tools can represent various different actions and below is example with tool that stands for a simple knowledge database.

@tool
def company_info(name: str) -> str:
"""Returns basic company information based on name."""
companies = {
"OpenAI": "Artificial intelligence company, creator of ChatGPT.",
"LangChain": "A library that makes it easy to build applications with language models.",
"Tesla": "Manufacturer of electric cars and batteries."
}
return companies.get(name, "I don't know this company.")

tools = [company_info]
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)

agent.run("Tell me what Tesla does.")

output:


> Entering new AgentExecutor chain...
I need to gather information about Tesla to understand what the company does.
Action: company_info
Action Input: "Tesla"
Observation: Manufacturer of electric cars and batteries.
Thought:I now know that Tesla is primarily involved in the manufacturing of electric cars and batteries.
Final Answer: Tesla is a manufacturer of electric cars and batteries.

> Finished chain.
'Tesla is a manufacturer of electric cars and batteries.'

We see in output above that agent indeed used tool “company_info” to answer the question.

Available tools in LangChain

Although we can define almost any functionality as a custom tool, there are many predefined tools available in LangChain.

List of available tools: https://python.langchain.com/docs/integrations/tools/

Let’s install 2 of external tools: tavily search and wikipedia.

Tool Tavily search

Tavily searc tool gives LLM access to up to date search results.

from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_classic.agents import initialize_agent, AgentType

# Initialize search tools
# Tavily API key: https://app.tavily.com/home
search = TavilySearchResults(max_results=3)

# Direct use of tools
query = "The latest news about the UK Prime Minister."
results = search.invoke(query)

print(f"Search results for query: '{query}'")
for i, result in enumerate(results, 1):
print(f"\n{i}. {result.get('title', 'Missing title')}")
print(f" URL: {result.get('url', 'Missing URL')}")
print(f" Content: {result.get('content', 'Missing content')[:200]}...")

# List of tools with search engine
tools = [search]

# Agent with internet access
agent_with_search = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)

# Example query requiring internet search
response = agent_with_search.run(
"Who is the current Prime Minister of UK and how old is he/she?"
)
print(f"\nAgent answer:\n{response}")

output:

/tmp/ipykernel_16440/3519918605.py:6: LangChainDeprecationWarning: The class `TavilySearchResults` was deprecated in LangChain 0.3.25 and will be removed in 1.0. An updated version of the class exists in the :class:`~langchain-tavily package and should be used instead. To use it run `pip install -U :class:`~langchain-tavily` and import as `from :class:`~langchain_tavily import TavilySearch``.
search = TavilySearchResults(max_results=3)
Search results for query: 'The latest news about the UK Prime Minister.'

1. Keir Starmer - BBC News
URL: https://www.bbc.com/news/topics/c50znx8v8rwt
Content: Headshot of Sir Keir Starmer in a suit sitting in front of two bright lamps and a UK flag.

## Doctor strike during flu outbreak would be 'reckless', says Starmer

The prime minister says it would be ...

2. UK's Starmer and EU's von der Leyen discuss Ukraine peace plan ...
URL: https://www.reuters.com/business/finance/uks-starmer-eus-von-der-leyen-discuss-ukraine-peace-plan-frozen-russian-assets-2025-12-13/
Content: All quotes delayed a minimum of 15 minutes. See here for a complete list of exchanges and delays.

© 2025 Reuters. All rights reserved [...] Browse an unrivalled portfolio of real-time and historical ...

3. PMQs LIVE: Prime Minister's Questions - 10 December 2025
URL: https://www.youtube.com/watch?v=5dg5n49OudY
Content: Watch PMQs with British Sign Language (BSL) - https://youtube.com/live/v-pOzECn55w?feature=share Prime Minister's Question Time,...


> Entering new AgentExecutor chain...
I need to find the current Prime Minister of the UK and their age.
Action: tavily_search_results_json
Action Input: "current Prime Minister of UK 2023"
Observation: [{'title': 'Rishi Sunak | Biography, Wife, Politics, & Net Worth', 'url': 'https://www.britannica.com/biography/Rishi-Sunak', 'content': 'In November 2023 Sunak sacked controversial home secretary Suella Braverman as part of a broader cabinet reshuffle that saw the stunning return to government of former prime minister David Cameron as foreign secretary. Cameron, who was elevated to the House of Lords and created Lord Cameron of Chipping Norton in order to take his seat in the cabinet, seemed an unusual choice, as Sunak had previously endeavored to characterize his government as a break with the past. The return of Cameron to [...] In March 2023 Sunak held off a Tory rebellion and passed the so-called Windsor Framework, a post-Brexit deal to regulate trade between Northern Ireland, the rest of the United Kingdom, and the European Union. During his campaign to drum up support for the bill, Sunak stressed the “privileged access, not just to the U.K. home market, which is enormous, but also the EU single market” that Northern Ireland would enjoy under the framework. Critics were quick to observe that, prior to Brexit, the [...] Rishi Sunak (born May 12, 1980, Southampton, England) is a British politician and financier who became the leader of the Conservative Party and prime minster of the United Kingdom in October 2022. He resigned as prime minister in July 2024 and was replaced by Labour Party leader Keir Starmer after Labour won a landslide victory in a general election. Previously Sunak had served as chancellor of the Exchequer (2020–22).\n\n## Early life', 'score': 0.64344186}, {'title': 'Prime Minister of the United Kingdom', 'url': 'https://en.wikipedia.org/wiki/Prime_Minister_of_the_United_Kingdom', 'content': "Incumbent Keir Starmer. since 5 July 2024 ; Government of the United Kingdom · Prime Minister's Office", 'score': 0.5079833}, {'title': 'Rishi Sunak', 'url': 'https://en.wikipedia.org/wiki/Rishi_Sunak', 'content': 'Rishi Sunak (born 12 May 1980) is a British politician and former investment banker who served as Prime Minister of the United Kingdom and Leader of the', 'score': 0.34244013}]
Thought:I need to clarify the current Prime Minister of the UK and their age based on the latest information. The search results indicate that Rishi Sunak was the Prime Minister until July 2024, when he was succeeded by Keir Starmer. Therefore, I need to find out Keir Starmer's birth date to calculate his age.

Action: tavily_search_results_json
Action Input: "Keir Starmer birth date"
Observation: [{'title': 'We found war veterans and healthcare workers within Keir ...', 'url': 'https://www.findmypast.co.uk/blog/discoveries/keir-starmer-family-tree', 'content': "Keir Rodney Starmer was born on 2 September 1962 in Southwark, London to parents Josephine A. Baker (1935-2015) and Rodney Starmer (1935-2018). The Starmer family lived in Oxted, Surrey, for most of Keir's childhood. [...] We began our research by building out the branches of the Starmer family tree on Keir's father's side. His father Rodney was born in 1935 to Herbert (‘Bertie’) Starmer (1905-1991) and Doris Edith Parsons (b.1907), Keir’s paternal grandparents. Doris hailed from Caterham, Surrey, while Bertie was born in Everton, Liverpool. [...] Bertie’s parents (and Keir’s great-grandparents) were Catherine (b.1886) and Gustavus Adolphus Starmer (b.1883). On his son’s baptism record, Gustavus’ occupation is listed as a gamekeeper. The family lived at 19 Woodhouse Street.", 'score': 0.99989283}, {'title': 'Keir Starmer - Wikipedia', 'url': 'https://en.wikipedia.org/wiki/Keir_Starmer', 'content': 'Sir Keir Rodney Starmer (born 2 September 1962) is a British politician and lawyer who has served as Prime Minister of the United Kingdom since 2024 and as Leader of the Labour Party "Leader of the Labour Party (UK)") since 2020. He previously served as Leader of the Opposition "Leader of the Opposition (United Kingdom)") from 2020 to 2024. He has been Member of Parliament "Member of Parliament (United Kingdom)") (MP) for Holborn and St Pancras since 2015, and was Director of Public [...] Keir Rodney Starmer was born on 2 September 1962 in Southwark, south east London, and raised in Oxted, Surrey. He was the second of the four children of Josephine (née Baker), a nurse, and Rodney Starmer, a toolmaker. His mother developed Still\'s disease. His mother attended St John\'s Anglican Church in nearby Hurst Green, while his father was an atheist. He was nominally "brought up Church of England". His parents were both Labour Party supporters, and reputedly named him after the party\'s [...] | Born | Keir Rodney Starmer (1962-09-02) 2 September 1962 (age 63) Southwark, London, England |\n| Party | Labour "Labour Party (UK)") |\n| Spouse | Victoria Alexander \u200b (m. 2007)\u200b |\n| Children | 2 |\n| Residences | 10 Downing Street, London Chequers, Buckinghamshire |\n| Alma mater | University of Leeds (LLB) St Edmund Hall, Oxford (BCL) |\n| Occupation | Politician lawyer |\n| Profession | Barrister |\n| Signature |\n| Website | keirstarmer.com |', 'score': 0.99984276}, {'title': 'Keir Starmer Facts for Kids', 'url': 'https://kids.kiddle.co/Keir_Starmer', 'content': 'Sir Keir Rodney Starmer (born 2 September 1962) is a British politician and lawyer. He has been the Prime Minister of the United Kingdom since July 2024. He also leads the Labour Party "Labour Party (UK)") since 2020. Before becoming Prime Minister, he was the Leader of the Opposition "Leader of the Opposition (United Kingdom)") from 2020 to 2024. [...] ## Early Life and Education\n\nReigate Grammar School (pictured 2009), where Starmer was a pupil\n\nKeir Rodney Starmer was born on 2 September 1962, in Southwark, London. He grew up in Oxted, Surrey. He was the second of four children. His mother was a nurse, and his father was a toolmaker. His parents supported the Labour Party.', 'score': 0.9997565}]
Thought:I now have the necessary information. Keir Starmer is the current Prime Minister of the UK, having taken office in July 2024. He was born on September 2, 1962, which makes him 61 years old as of now.

Final Answer: The current Prime Minister of the UK is Keir Starmer, and he is 61 years old.

> Finished chain.

Agent answer:
The current Prime Minister of the UK is Keir Starmer, and he is 61 years old.

Wikipedia tool

Wikipedia tool allows to search wikipedia resources by LLM agents.

from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper

# Initialization tools Wikipedia
wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())

# Direct use
wiki_result = wikipedia.run("Python programming language")
print(f"Wikipedia - Python:\n{wiki_result[:300]}...")

# Agent with multiple tools
# Agent with access to multiple information sources
tools_extended = [search, wikipedia, company_info]

agent_multi_tool = initialize_agent(
tools=tools_extended,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)

# Query requiring the use of various tools
response = agent_multi_tool.run(
"Find information about Python on Wikipedia, then search for the latest articles about new features in Python 3.13"
)
print(f"\nAnswer:\n{response}")

output:

Wikipedia - Python:
Page: Python (programming language)
Summary: Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation. Python is dynamically type-checked and garbage-collected. It supports multiple programming paradigms, ...


> Entering new AgentExecutor chain...
I will first gather general information about Python from Wikipedia to understand its background and features. After that, I will search for the latest articles regarding new features in Python 3.13.

Action: wikipedia
Action Input: Python (programming language)
Observation: Page: Python (programming language)
Summary: Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation. Python is dynamically type-checked and garbage-collected. It supports multiple programming paradigms, including structured (particularly procedural), object-oriented and functional programming.
Guido van Rossum began working on Python in the late 1980s as a successor to the ABC programming language. Python 3.0, released in 2008, was a major revision and not completely backward-compatible with earlier versions. Beginning with Python 3.5, capabilities and keywords for typing were added to the language, allowing optional static typing. As of 2025, the Python Software Foundation supports Python 3.10, 3.11, 3.12, 3.13, and 3.14, following the projects annual release cycle and five-year support policy. Earlier versions in the 3.x series have reached end-of-life and no longer receive security updates.
Python has gained widespread use in the machine learning community. It is widely taught as an introductory programming language. Since 2003, Python has consistently ranked in the top ten of the most popular programming languages in the TIOBE Programming Community Index, which ranks based on searches in 24 platforms.

Page: Outline of the Python programming language
Summary: The following outline is provided as an overview of and topical guide to Python:
Python is a general-purpose, interpreted, object-oriented, multi-paradigm, and dynamically typed programming language known for its readable syntax and broad standard library. Python was created by Guido van Rossum and first released in 1991. It emphasizes code readability and developer productivity.



Page: History of Python
Summary: The programming language Python was conceived in the late 1980s, and its implementation was started in December 1989 by Guido van Rossum at CWI in the Netherlands as a successor to ABC capable of exception handling and interfacing with the Amoeba operating system. Van Rossum was Python's principal author and had a central role in deciding the direction of Python (as reflected in the title given to him by the Python community, Benevolent Dictator for Life (BDFL)) until stepping down as leader on July 12, 2018. Python was named after the BBC TV show Monty Python's Flying Circus.
Python 2.0 was released on October 16, 2000, with many major new features, such as list comprehensions, cycle-detecting garbage collector, reference counting, memory management and support for Unicode, along with a change to the development process itself, with a shift to a more transparent and community-backed process.
Python 3.0, a major, backwards-incompatible release, was released on December 3, 2008 after a long period of testing. Many of its major features were also backported to the backwards-compatible Python versions 2.6 and 2.7 until support for Python 2 finally ceased at the beginning of 2020. Releases of Python 3 up through 3.12 include the 2to3 utility, which automates the translation of Python 2 code to Python 3.
As of 24 October 2025, Python 3.14.0 is the latest stable release. This version currently receives full bug-fix and security updates, while Python 3.13—released in October 2024—will continue to receive bug-fixes until October 2026, and after that will only receive security fixes until its end-of-life in 2029. Python 3.10 is the oldest supported version of Python (albeit in the 'security support' phase).


Thought:I have gathered general information about Python, including its history, features, and the current versions supported by the Python Software Foundation. Now, I will search for the latest articles about new features in Python 3.13 to provide specific details on what has been introduced in this version.

Action: tavily_search_results_json
Action Input: new features in Python 3.13
Observation: [{'title': 'Python Release Python 3.13.8', 'url': 'https://www.python.org/downloads/release/python-3138/', 'content': 'Python 3.13 is the ~~newest~~ previous major release of the Python programming language, and it contains many new features and optimizations compared to Python 3.12. 3.13.8 is the eighth maintenance release of 3.13, containing around 200 bugfixes, build improvements and documentation changes since 3.13.7.\n\n# Major new features of the 3.13 series, compared to 3.12\n\nSome of the new major new features and changes in Python 3.13 are:\n\n## New features', 'score': 0.9999844}, {'title': 'Python Release Python 3.13.0', 'url': 'https://www.python.org/downloads/release/python-3130/', 'content': 'Python 3.13.0 is the newest major release of the Python programming language, and it contains many new features and optimizations compared to Python 3.12. (Compared to the last release candidate, 3.13.0rc3, 3.13.0 contains two small bug fixes and some documentation and testing changes.)\n\n# Major new features of the 3.13 series, compared to 3.12\n\nSome of the new major new features and changes in Python 3.13 are:\n\n## New features', 'score': 0.9999609}, {'title': 'Python 3.13 New Features', 'url': 'https://www.geeksforgeeks.org/python/python-3-13-new-features/', 'content': 'Python 3.13 introduces significant improvements to the interactive interpreter along with enhanced error messages. The new interactive interpreter now supports colorization, providing a more visually appealing experience. This color support extends to tracebacks and doctest output as well. Users have the option to disable colorization through the PYTHON\\_COLORS and NO\\_COLOR environment variables. [...] ````\n>>> sys.version_info\nTraceback (most recent call last):\n File "<stdin>", line 1, in <module>\nNameError: name \'sys\' is not defined. Did you forget to import \'sys\'?\n\n````\n\n## 5. Interactive Shell Makeover (New REPL)\n\nPython 3.13 introduces a much-anticipated improvement for interactive development, a brand new REPL (Read-Eval-Print Loop). This interactive shell makeover aims to provide a more user-friendly and informative experience for Python programmers.\n\n### Features of New REPL [...] Nearly annually, Python releases a new version. The most recent version, Python 3.13, will be available on May 8, 2024, following Python 3.12 in that order. This version introduced many new features and improvements. This is a pre-release of the next Python version, which introduced some new features as well as improvements to the existing ones. In this article, we will see what has been changed in Python version 3.13.\n\nTable of Content', 'score': 0.9999008}]
Thought:I have gathered the necessary information about Python and its latest version, 3.13. The search results provided details about the new features introduced in Python 3.13, including improvements to the interactive interpreter and enhanced error messages.

Final Answer: Python 3.13 introduces significant improvements, including a new interactive interpreter with colorization for a better user experience, enhanced error messages, and a revamped REPL (Read-Eval-Print Loop) for more user-friendly interaction. For more detailed information, you can check the official release notes [here](https://www.python.org/downloads/release/python-3130/) and an article on the new features [here](https://www.geeksforgeeks.org/python/python-3-13-new-features/).

> Finished chain.

Answer:
Python 3.13 introduces significant improvements, including a new interactive interpreter with colorization for a better user experience, enhanced error messages, and a revamped REPL (Read-Eval-Print Loop) for more user-friendly interaction. For more detailed information, you can check the official release notes [here](https://www.python.org/downloads/release/python-3130/) and an article on the new features [here](https://www.geeksforgeeks.org/python/python-3-13-new-features/).

That’s all in chapter related to using LangChain tools and by this making LLMs able to interact with environment and extend their capabilities.
In next chapter we will learn ReAct agents which can reason in multiple steps and take relevant actions.

see next chapter

see previous chapter

see the full code from this article in the GitHub repository

Join thousands of data leaders on the AI newsletter. Join over 80,000 subscribers and keep up to date with the latest developments in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

Published via Towards AI


Towards AI Academy

We Build Enterprise-Grade AI. We'll Teach You to Master It Too.

15 engineers. 100,000+ students. Towards AI Academy teaches what actually survives production.

Start free — no commitment:

6-Day Agentic AI Engineering Email Guide — one practical lesson per day

Agents Architecture Cheatsheet — 3 years of architecture decisions in 6 pages

Our courses:

AI Engineering Certification — 90+ lessons from project selection to deployed product. The most comprehensive practical LLM course out there.

Agent Engineering Course — Hands on with production agent architectures, memory, routing, and eval frameworks — built from real enterprise engagements.

AI for Work — Understand, evaluate, and apply AI for complex work tasks.

Note: Article content contains the views of the contributing authors and not Towards AI.