Skip to content

#301: Introducing LangChain for AI Applications

There is a lot going on in the AI space. New tools and models show up in short succession, while other AI services suddenly change their behaviour and deliver poorer results. Whatever we use today is probably outdated in a few months. In such a fast-changing place it is a pain to develop software.

Over the next few weeks we explore LangChain, a tool that allows us to use an abstraction over the different products we could use. While we need to learn yet another tool, we gain the benefit of swapping out parts of our solution while the rest of our application can stay the same. Let us see how that works.

What Is LangChain?

LangChain is an open-source framework designed to help developers create powerful applications that integrate large language models (LLM) with external data, tools, and custom logic. It is a modular framework for working with LLMs and allows us to chain together different components such as prompts, memory, or data sources - hence its name.

Instead of writing everything by ourselves and gluing specific method calls together, we can use LangChain as an abstraction and use their common interfaces. That way we can change the memory, the LLM or the way how we access our data sources without rewriting everything else.

With LangChain we can build a chatbot that:

  • Uses contextual memory to remember past conversations.
  • Fetches data from a SQL database or API when needed.
  • Combines reasoning from multiple prompts.
  • Can output structured, actionable results instead of just plain text.

Key Components of LangChain

LangChain is built around several key concepts:

  • LLMs and Chat Models: These are the core engines (like OpenAI’s GPT models) that generate text or respond to queries.
  • Prompt Templates: Reusable templates for building structured prompts dynamically.
  • Chains: Sequences of steps that define how the model processes information.
  • Memory: Storage for conversation history or contextual data.
  • Agents and Tools: Agents make decisions about which actions to take, using "tools" like APIs, Python functions, or databases to get to the requested information.

Together, these components make it possible to design sophisticated AI workflows with minimal boilerplate code.

A Simple Example

For our first step with LangChain, we use our local LLM that runs inside LM Studio and write a small script that translates the text we enter in English to French. Before we can run the code, we need a few packages:

uv pip install langchain langchain_openai

With the packages in place, we can use this code to create a little translator:

from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema import StrOutputParser

# 1. Define the LLM
llm = ChatOpenAI(
    model="not-needed",  # LM Studio ignores this
    openai_api_base = "http://localhost:1234/v1",
    api_key = "not-needed",  # LM Studio ignores this
    temperature = 0.3,
)

# 2. Create the prompt
prompt = ChatPromptTemplate.from_template(
    "Translate the following English text into French:\n\n{text}"
)

# 3. Create a chain
chain = prompt | llm | StrOutputParser()

# 4. Run the translator
if __name__ == "__main__":
    text = input("Enter English text: ")
    french = chain.invoke({"text": text})
    print("\nTranslation:\n", french)

We can run the script and translate our input text:

Enter English text: Hello, this is the PythonFriday blog.

Translation:
 Bonjour, ceci est le blog PythonFriday.

Next

The few lines of code for the translator show us the basics of LangChain. We need an LLM, a prompt and maybe some other helpful classes (like the StrOutputParser), chain everything together and have an AI application.

As with all complex libraries, LangChain has its quirks and challenges. We explore them over the coming weeks with more complex applications. Next week we continue our journey with a chatbot that remembers our conversation.