--- title: '💬 chat' --- `chat()` method allows you to chat over your data sources using a user-friendly chat API. You can find the signature below: ### Parameters Question to ask Configure different llm settings such as prompt, temprature, number_documents etc. The purpose is to test the prompt structure without actually running LLM inference. Defaults to `False` A dictionary of key-value pairs to filter the chunks from the vector database. Defaults to `None` Session ID of the chat. This can be used to maintain chat history of different user sessions. Default value: `default` Return citations along with the LLM answer. Defaults to `False` ### Returns 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: ```python 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: ```python 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: ```python 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?"' ```