# Build a 'Chat with website' using Groq Llama 3

![Build a 'Chat with website' using Groq Llama 3 image](https://www.firecrawl.dev/images/blog/g4.png)

## Setup

Install our python dependencies, including langchain, groq, faiss, ollama, and firecrawl-py.

```bash
pip install --upgrade --quiet langchain langchain-community groq faiss-cpu ollama firecrawl-py

```

We will be using Ollama for the embeddings, you can download Ollama [here](https://ollama.com/). But feel free to use any other embeddings you prefer.

## Load website with Firecrawl

To be able to get all the data from a website and make sure it is in the cleanest format, we will use Firecrawl. Firecrawl integrates very easily with Langchain as a document loader.

Here is how you can load a website with Firecrawl:

```python
from langchain_community.document_loaders import FireCrawlLoader  # Importing the FirecrawlLoader

url = "https://firecrawl.dev"
loader = FirecrawlLoader(
    api_key="fc-YOUR_API_KEY", # Note: Replace 'YOUR_API_KEY' with your actual FireCrawl API key
    url=url,  # Target URL to crawl
    mode="crawl"  # Mode set to 'crawl' to crawl all accessible subpages
)
docs = loader.load()

```

## Setup the Vectorstore

Next, we will setup the vectorstore. The vectorstore is a data structure that allows us to store and query embeddings. We will use the Ollama embeddings and the FAISS vectorstore.
We split the documents into chunks of 1000 characters each, with a 200 character overlap. This is to ensure that the chunks are not too small and not too big - and that it can fit into the LLM model when we query it.

```python
from langchain_community.embeddings import OllamaEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import FAISS

text_splitter=RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
splits = text_splitter.split_documents(docs)
vectorstore = FAISS.from_documents(documents=splits, embedding=OllamaEmbeddings())

```

## Retrieval and Generation

Now that our documents are loaded and the vectorstore is setup, we can, based on user’s question, do a similarity search to retrieve the most relevant documents. That way we can use these documents to be fed to the LLM model.

```python
question = "What is firecrawl?"
docs = vectorstore.similarity_search(query=question)

```

## Generation

Last but not least, you can use the Groq to generate a response to a question based on the documents we have loaded.

```python
from groq import Groq

client = Groq(
    api_key="YOUR_GROQ_API_KEY",
)

completion = client.chat.completions.create(
    model="llama3-8b-8192",
    messages=[\
        {\
            "role": "user",\
            "content": f"You are a friendly assistant. Your job is to answer the users question based on the documentation provided below:\nDocs:\n\n{docs}\n\nQuestion: {question}"\
        }\
    ],
    temperature=1,
    max_tokens=1024,
    top_p=1,
    stream=False,
    stop=None,
)

print(completion.choices[0].message)

```

## And Voila!

You have now built a ‘Chat with your website’ bot using Llama 3, Groq Llama 3, Langchain, and Firecrawl. You can now use this bot to answer questions based on the documentation of your website.

If you have any questions or need help, feel free to reach out to us at [Firecrawl](https://firecrawl.dev/).

Article updated recently

[🔥](https://www.firecrawl.dev/)

## Ready to _Build?_

Start scraping web data for your AI apps today.

No credit card needed.

Get Started

## About the Author

[![Nicolas Camara image](https://www.firecrawl.dev/nick-img.jpeg)\\
Nicolas Camara@nickscamara\_](https://x.com/nickscamara_)

Nicolas Camara is the Chief Technology Officer (CTO) at Firecrawl.
He previously built and scaled Mendable, one of the pioneering "chat with your documents" apps,
which had major Fortune 500 customers like Snapchat, Coinbase, and MongoDB.
Prior to that, Nicolas built SideGuide, the first code-learning tool inside VS Code,
and grew a community of 50,000 users. Nicolas studied Computer Science and has over 10 years of experience in building software.

### More articles by Nicolas Camara

[Using OpenAI's Realtime API and Firecrawl to Talk with Any Website\\
\\
Build a real-time conversational agent that interacts with any website using OpenAI's Realtime API and Firecrawl.](https://www.firecrawl.dev/blog/How-to-Talk-with-Any-Website-Using-OpenAIs-Realtime-API-and-Firecrawl) [Extract website data using LLMs\\
\\
Learn how to use Firecrawl and Groq to extract structured data from a web page in a few lines of code.](https://www.firecrawl.dev/blog/data-extraction-using-llms) [Getting Started with Grok-2: Setup and Web Crawler Example\\
\\
A detailed guide on setting up Grok-2 and building a web crawler using Firecrawl.](https://www.firecrawl.dev/blog/grok-2-setup-and-web-crawler-example) [Launch Week I / Day 6: LLM Extract (v1)\\
\\
Extract structured data from your web pages using the extract format in /scrape.](https://www.firecrawl.dev/blog/launch-week-i-day-6-llm-extract) [Launch Week I / Day 7: Crawl Webhooks (v1)\\
\\
New /crawl webhook support. Send notifications to your apps during a crawl.](https://www.firecrawl.dev/blog/launch-week-i-day-7-webhooks) [OpenAI Swarm Tutorial: Create Marketing Campaigns for Any Website\\
\\
A guide to building a multi-agent system using OpenAI Swarm and Firecrawl for AI-driven marketing strategies](https://www.firecrawl.dev/blog/openai-swarm-agent-tutorial) [Build a 'Chat with website' using Groq Llama 3\\
\\
Learn how to use Firecrawl, Groq Llama 3, and Langchain to build a 'Chat with your website' bot.](https://www.firecrawl.dev/blog/chat-with-website)

## CrawlBench LLM Evaluation
Introducing /extract - Get web data with a prompt [Try now](https://www.firecrawl.dev/extract)

Dec 9, 2024

•

[![Swyx image](https://www.firecrawl.dev/swyx.jpg)Swyx](https://x.com/swyx)