Getting started with LangChain and Weights & Biases
Discover how to integrate LangChain and Weights & Biases to build dynamic, data-driven AI applications.
Created on January 27|Last edited on December 30
Comment
In this article, we’ll explore how LangChain expands the capabilities of language models and how Weights & Biases optimizes their development. Additionally, we'll examine how Weights & Biases complements LangChain by optimizing the training and development of these models.
From LangChain's core components to practical tips for integrating Weights & Biases, this article aims to provide a comprehensive guide for those eager to navigate and master these important tools in AI development.

Table of Content
What is LangChain?What makes LangChain unique?LangChain componentsLangChain librariesLangChain templatesLangServeLangSmithOverview of Weights & BiasesHow does LangChain work?Storing the data into vector indexesData retrievalChainingGetting started with LangChain and Weights & BiasesStep 1: Installing the necessary librariesStep 2: Importing the necessary librariesStep 3: Turn on Weights & Biases' logging for LangChainStep 4: Set our OpenAI key and initialize a new OpenAI modelStep 5: Loading our LangChain documentation dataStep 6: Create a FAISS index from the documentStep 7: Create a query for the documentStep 8: Set up the prompt templateUsing Weights & Biases to trace LangChain’s activityPractical tips for beginners to LangChain and Weights & BiasesLangChainWeights & BiasesConclusionReference
What is LangChain?
LangChain is more than just a framework for language models: it’s a toolkit for integrating these models with external data and computational workflows. By enabling connections to databases, APIs, and custom logic, LangChain turns models from standalone text generators into dynamic, problem-solving agents.
Key Features:
- Access to Structured Data: Language models can generate responses informed by real-time or specific data.
- Chaining Processes: LangChain supports multi-step workflows, combining outputs from various components like data retrieval, reasoning, or algorithms.
What makes LangChain unique?
LangChain’s uniqueness lies in its ability to bridge the gap between language models and practical applications.
Why It Stands Out:
- Real-Time Data Integration: Models interact with structured data, delivering contextually relevant outputs.
- Process Chaining: Create workflows that integrate multiple steps for sophisticated AI solutions.
- Customizable Templates: Pre-built templates make it easier to adapt workflows for specific needs.
LangChain components
LangChain is built on four main components:
LangChain libraries
The backbone of LangChain, these libraries facilitate integration with data sources and enable complex chains of operations.
Use Cases
- Data-Driven Responses: For applications that require language models to generate responses based on up-to-date or specific data, such as generating a weather report based on real-time weather data.
- Complex Query Processing: In scenarios where a query requires multiple computational steps, such as retrieving information, processing it, and then generating a language-based output.
LangChain templates
LangChain Templates are pre-defined structures or scripts that guide the language model in generating responses in a specific format or style. These templates can be highly customized to fit various application needs.
Some of these templates as provided by LangChain include:
- Retrieval-Augmented Generation Chatbot: Create a chatbot tailored to your data using OpenAI and PineconeVectorStore.
- Data Extraction with OpenAI Functions: Extract structured data from unstructured sources with OpenAI's function-calling capabilities.
- Local Retrieval-Augmented Generation: Develop a data-specific chatbot relying solely on local tools such as Ollama, GPT4all, and Chroma.
- OpenAI Functions Agent: Design a chatbot capable of performing actions using OpenAI's function calling and Tavily.
- XML Agent: Build an action-oriented chatbot leveraging Anthropic and You.com.
Use Cases
- Standardized Reporting: In generating business reports, research summaries, or news articles where a consistent format is desired.
- Educational Content Creation: For creating educational materials like quizzes, explanations, or essay questions in a structured manner.
LangServe
LangServe acts as a server interface for language models, allowing users to access language model capabilities via API calls. This makes it easier to integrate language models into existing systems or applications.
Use Cases
- Web Applications: For developers looking to incorporate language model functionalities into web applications without embedding the entire model.
- Microservices Architecture: In a microservices architecture, where different services need to interact with a language model independently.
LangSmith
LangSmith is focused on fine-tuning language models for specific tasks or domains. It allows users to customize the model's responses more precisely, making it suitable for specialized applications.
Use Cases
- Domain-Specific Applications: In sectors like legal, medical, or technical fields where the language model needs to understand and generate domain-specific content.
- Customized Customer Service: For tailoring chatbots and virtual assistants to reflect a company's brand voice or to handle specific types of customer queries.
To learn more about the LangChain Framework and its four components, please check the official LangChain Documentation.
Overview of Weights & Biases
Weights & Biases is a leading machine learning platform that enhances LangChain’s capabilities by providing robust tracking, visualization, and debugging tools. Here’s how the two work together:
Why Use Weights & Biases with LangChain?
- Experiment Tracking: Monitor configurations and metrics.
- Visualization: Gain insights into performance and optimization.
- Debugging: Easily identify bottlenecks or inefficiencies in workflows.
How does LangChain work?
LangChain leverages vector databases and chaining to process and respond to queries. Here’s a breakdown of the workflow:
Storing the data into vector indexes

- Vectorization: Convert text into vector representations using embeddings.
- Indexing: Use databases like FAISS or Pinecone for efficient similarity searches.
Data retrieval

- Query Vectorization: Transform queries into vectors.
- Performing the Search: Retrieve the most relevant data from the index.
Chaining

- Integration: Combine retrieved data with the language model to generate responses.
Getting started with LangChain and Weights & Biases
Step 1: Installing the necessary libraries
We begin by installing all the required Python libraries, including LangChain, Weights & Biases (wandb), OpenAI, and others. These are essential for integrating language models and handling vector indexing in our project.
!pip install langchain wandb!pip install openai!pip install pinecone-client!pip install langchain-openai!pip install tiktoken!pip install faiss-gpu!pip install --upgrade openai
Step 2: Importing the necessary libraries
Next, we import the necessary modules from these libraries. This step sets up our environment to use LangChain with OpenAI’s language models, along with tools for document loading and data indexing.
from langchain_openai import ChatOpenAI, OpenAIEmbeddingsfrom langchain.chains import create_retrieval_chainfrom langchain.prompts import ChatPromptTemplatefrom langchain.schema import Documentfrom langchain.vectorstores import FAISSfrom langchain.document_loaders import PyPDFLoaderimport os
Step 3: Turn on Weights & Biases' logging for LangChain
Here, we enable logging for our LangChain activities using Weights & Biases. This is crucial for tracking and visualizing the performance of our LangChain applications, giving us insights into how they operate.
os.environ["LANGCHAIN_WANDB_TRACING"] = "true"# optionally set your wandb settings or configsos.environ["WANDB_PROJECT"] = "langchain-tracing"
Step 4: Set our OpenAI key and initialize a new OpenAI model
We then set up our environment with the OpenAI API key and initialize the language model, such as ChatGPT, which we'll use for natural language processing.
# Set OpenAI API keyos.environ['OPENAI_API_KEY'] = "insert your OpenAI API key here"# Initialize the language modelllm = ChatOpenAI()
Step 5: Loading our LangChain documentation data
In this step, we use PyPDFLoader to load the LangChain documentation from a PDF file. We also split it into sections or pages, making the data manageable for processing. Since ChatGPt, is not well informed on LangChain, we will be using the documentation of LangChain itself as the data source.
loader = PyPDFLoader("/kaggle/input/langchaindocumentationpdf/langChainDocumentation.pdf")pages = loader.load_and_split()
Step 6: Create a FAISS index from the document
We convert the loaded document sections into vector representations and create a FAISS index. This allows us to perform efficient similarity searches for our queries.
embeddings = OpenAIEmbeddings()faiss_index = FAISS.from_documents(pages, embeddings)
Step 7: Create a query for the document
We define a specific query and use the FAISS index to find the most relevant sections of the document that match this query.
# Create a query for the documentquery = "What is LangChain?"docs = faiss_index.similarity_search(query, k=1)# Access the text of the top resultretrieved_doc = docs[0] if docs else None
Step 8: Set up the prompt template
Finally, we prepare a template for the language model that incorporates context from the retrieved document. Using this template, we generate a response based on the combined information from the query and the document.
# Set up the enhanced prompt templateprompt_template = ChatPromptTemplate.from_template("Based on the following information:\n\n{context}\n\n""Can you answer this question: {input}?")# Format the prompt with the actual context and the queryif retrieved_doc:formatted_prompt = prompt_template.format(context=retrieved_doc.page_content, input=query)# Invoke the language model with the formatted promptresponse = llm.invoke(formatted_prompt)print("Response:\n", response)else:print("No relevant document found.")
Output if the Documentation File Is Empty
Response:
content='As per the provided information, there is no mention of "LangChain." It is possible that "LangChain" may refer to something unrelated to the Sunflower Galaxy or the information provided. Could you please provide more context or clarify your question?'
Output if the Documentation File Contains the Actual Data
Response:
content='LangChain is a framework that facilitates the development of language model-powered applications. It enables applications to be context-aware and capable of reasoning based on the provided context. LangChain consists of several components, including Python and JavaScript libraries (LangChain Libraries) that provide interfaces and integrations for various components, pre-built chains and agents, as well as LangChain Templates that offer easily deployable reference architectures for different tasks. Additionally, LangServe allows deploying LangChain chains as a REST API, while LangSmith serves as a developer platform for debugging, testing, evaluating, and monitoring chains built on any Language Model (LLM) framework, seamlessly integrating with LangChain. Overall, LangChain simplifies the entire application lifecycle by providing tools for development, productionizing, and deployment.'
Using Weights & Biases to trace LangChain’s activity

Using Weights & Biases, we created a trace table, where we can trace the model's timeline and the model architecture of our LLM.
Practical tips for beginners to LangChain and Weights & Biases
LangChain
- Experiment with different vector storage solutions (e.g., Pinecone, Chroma) to optimize performance.
- Start small with basic workflows before scaling to complex chains.
Weights & Biases
- Use custom metrics to evaluate language models more effectively.
- Track changes over time with detailed logs and visualizations.
Conclusion
LangChain and Weights & Biases are transformative tools for AI development. LangChain enhances language models by connecting them to real-world data and logic processes, while Weights & Biases ensures effective tracking and optimization. Together, they provide the framework and tools you need to build sophisticated, data-driven AI applications.
Reference
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.