Skip to main content
chat() method allows you to chat over your data sources using a user-friendly chat API. You can find the signature below:

Parameters

input_query
str
Question to ask
config
BaseLlmConfig
Configure different llm settings such as prompt, temprature, number_documents etc.
dry_run
bool
The purpose is to test the prompt structure without actually running LLM inference. Defaults to False
where
dict
A dictionary of key-value pairs to filter the chunks from the vector database. Defaults to None
session_id
str
Session ID of the chat. This can be used to maintain chat history of different user sessions. Default value: default
citations
bool
Return citations along with the LLM answer. Defaults to False

Returns

answer
str | tuple
If citations=False, return a stringified answer to the question asked.
If citations=True, returns a tuple with answer and citations respectively.

Usage

With citations

If you want to get the answer to question and return both answer and citations, use the following code snippet:
With Citations
from embedchain import App

# Initialize app
app = App()

# Add data source
app.add("https://www.forbes.com/profile/elon-musk")

# Get relevant answer for your query
answer, sources = app.chat("What is the net worth of Elon?", citations=True)
print(answer)
# Answer: The net worth of Elon Musk is $221.9 billion.

print(sources)
# [
#    (
#        'Elon Musk PROFILEElon MuskCEO, Tesla$247.1B$2.3B (0.96%)Real Time Net Worthas of 12/7/23 ...',
#        {
#           'url': 'https://www.forbes.com/profile/elon-musk', 
#           'score': 0.89,
#           ...
#        }
#    ),
#    (
#        '74% of the company, which is now called X.Wealth HistoryHOVER TO REVEAL NET WORTH BY YEARForbes ...',
#        {
#           'url': 'https://www.forbes.com/profile/elon-musk', 
#           'score': 0.81,
#           ...
#        }
#    ),
#    (
#        'founded in 2002, is worth nearly $150 billion after a $750 million tender offer in June 2023 ...',
#        {
#           'url': 'https://www.forbes.com/profile/elon-musk', 
#           'score': 0.73,
#           ...
#        }
#    )
# ]
When citations=True, note that the returned sources are a list of tuples where each tuple has two elements (in the following order):
  1. source chunk
  2. dictionary with metadata about the source chunk
    • url: url of the source
    • doc_id: document id (used for book keeping purposes)
    • score: score of the source chunk with respect to the question
    • other metadata you might have added at the time of adding the source

Without citations

If you just want to return answers and donโ€™t want to return citations, you can use the following example:
Without Citations
from embedchain import App

# Initialize app
app = App()

# Add data source
app.add("https://www.forbes.com/profile/elon-musk")

# Chat on your data using `.chat()`
answer = app.chat("What is the net worth of Elon?")
print(answer)
# Answer: The net worth of Elon Musk is $221.9 billion.

With session id

If you want to maintain chat sessions for different users, you can simply pass the session_id keyword argument. See the example below:
With session id
from embedchain import App

app = App()
app.add("https://www.forbes.com/profile/elon-musk")

# Chat on your data using `.chat()`
app.chat("What is the net worth of Elon Musk?", session_id="user1")
# 'The net worth of Elon Musk is $250.8 billion.'
app.chat("What is the net worth of Bill Gates?", session_id="user2")
# "I don't know the current net worth of Bill Gates."
app.chat("What was my last question", session_id="user1")
# 'Your last question was "What is the net worth of Elon Musk?"'
โŒ˜I