ConversationalRetrievalQA chain 是建立在 RetrievalQAChain 之上,提供聊天历史记录的组件。 它首先将聊天记录(显式传入或从提供的内存中检索)和问题组合成一个独立的问题,然后从检索器中查找相关文档,最后将这些文档和问题传递到问答链以返回一. This chain takes in chat history (a list of messages) and new questions, and then returns an answer to that question. Conversational Retrieval Agents This is an agent specifically optimized for doing retrieval when necessary while holding a conversation and being able to answer questions based. Bruce Croft1 Mohit Iyyer1 1 University of Massachusetts Amherst 2 Ant Financial 3 Alibaba Group {chenqu,lyang,croft,miyyer}@cs. com,minghui. Get a pydantic model that can be used to validate output to the runnable. It involves defining input and partial variables within a prompt template. As i didn't find anything about used prompts in docs I was looking for them in repo and there are two. According to their documentation here. embedding_function need to be passed when you construct the object of Chroma . Excuse me, I would like to ask you some questions. This blog post is a tutorial on how to set up your own version of ChatGPT over a specific corpus of data. I use the buffer memory now. Download Accepted Papers Here. I wanted to let you know that we are marking this issue as stale. See the below example with ref to your provided sample code: qa = ConversationalRetrievalChain. This is done by the _split_sources(text) method, which takes a text as input and returns two outputs: the answer and the sources. It first combines the chat history (either explicitly passed in or retrieved from the provided memory) and the question into a standalone question, then looks up relevant documents from the retriever, and finally passes those documents and the. Use the following pieces of context to answer the question at the end. Create Conversational Retrieval QA Chain chat flow based on the template or created yourself. Embeddings play a pivotal role in natural language modeling, particularly in the context of semantic search and retrieval augmented generation (RAG). generate QA pairs. so your code would be: from langchain. RAG. See Diagram: After successfully. metadata = {'language': 'DE'}, and use SelfQueryRetriver ( LangChain Documentation). If you are using the following agent executor. Chain for having a conversation based on retrieved documents. qmh@alibaba. Unlike the machine comprehension module (Chap. {"payload":{"allShortcutsEnabled":false,"fileTree":{"langchain/src/chains":{"items":[{"name":"api","path":"langchain/src/chains/api","contentType":"directory"},{"name. So, in a way, Langchain provides a way for feeding LLMs with new data that it has not been trained on. I thought that it would remember conversation, but it doesn't. To start, we will set up the retriever we want to use,. conversational_retrieval. 5 and other LLMs. Hello, Based on the information you provided and the context from the LangChain repository, there are a couple of ways you can change the final prompt of the ConversationalRetrievalChain without modifying the LangChain source code. a) Previous framework typically has three stages: entailment reasoning based decision-making, span extraction and question rephrasing. I need a URL. Large language models (LLMs) like GPT-3 can produce human-like text given an initial text as prompt. Stream all output from a runnable, as reported to the callback system. I also added my own prompt. It enables applications that: Are context-aware: connect a language model to sources of context (prompt instructions, few shot examples, content to ground its response in, etc. Second, AI simply doesn’t. For me upgrading to the newest langchain package version helped: pip install langchain --upgrade. ; A number of extra context features, context/0, context/1 etc. Those are some cool sources, so lots to play around with once you have these basics set up. from langchain. \ You signed in with another tab or window. # Factory for creating a conversational retrieval QA chain chain_factory = langchain_docs. I understand that you're seeking clarification on the difference between ConversationChain and ConversationalRetrievalChain in the LangChain framework. Until now. The recently announced MLflow AI Gateway allows organizations to centralize governance, credential management, and rate limits for their model APIs, including SaaS LLMs, via an object called a Route. Saved searches Use saved searches to filter your results more quicklyCreate an Azure OpenAI, LangChain, ChromaDB, and Chainlit ChatGPT-like application in Azure Container Apps using Terraform. Text file QnA using conversational retrieval QA chain: Source: can I connect Conversational Retrieval QA Chain with custom tool? I know it's possible to connect a chain to agent using Chain Tool, but when I did this, my chatbot didn't follow all the instructions. chains. Wecombinedthepassagesummariesandthen(7)CoQA is a large-scale dataset for building Conversational Question Answering systems. Artificial intelligence (AI) technologies should adhere to human norms to better serve our society and avoid disseminating harmful or misleading information, particularly in Conversational Information Retrieval (CIR). See Diagram: After successfully. co LangChain is a powerful, open-source framework designed to help you develop applications powered by a language model, particularly a large. from_llm (ChatOpenAI (temperature=0), vectorstore. However, you requested 21864 tokens (5480 in the messages, 16384 in the completion). chain = load_qa_with_sources_chain (OpenAI (temperature=0),. . Make sure that the lead developer of a given task conducts quality assurance on that task in as non-biased a manner as possible. You switched accounts on another tab or window. - GitHub - JRC1995/Chatbot: Hybrid Conversational Bot based on both neural retrieval and neural generative mechanism with TTS. Agent utilizing tools and following instructions. 5-turbo) to auto-generate question-answer pairs from these docs. Already have an account? Describe the bug When chaining a conversational retrieval QA to a Conversational Agent via a Chain Tool. c 2020 Association for Computational Linguistics 960 We present a new dataset for learning to identify follow-up questions, namely LIF. edu,chencen. import { ChatOpenAI } from "langchain/chat_models/openai"; import { HNSWLib } from "langchain/vectorstores/hnswlib"; See full list on python. Is it possible to have the component called "Conversational Retrieval QA Chain", but that would use a memory buffer ? To remember the rest of the conversation, not only the last prompt. It then passes that schema as a function into OpenAI and passes a function_call parameter to force OpenAI to return arguments in the specified format. I also need the CONDENSE_QUESTION_PROMPT because there I will pass the chat history, since I want to achieve a converstional chat over. Start using Pinecone for free. when I ask "which was my l. this. Use the chat history and the new question to create a "standalone question". If yes, thats incorrect usage. The question rewriting (QR) subtask is specifically designed to reformulate. g. registry. openai. Conversational denotes the questions are presented in a conversation, and Retrieval denotes the related evidence needs to be retrieved rather than{"payload":{"allShortcutsEnabled":false,"fileTree":{"langchain/src/chains":{"items":[{"name":"api","path":"langchain/src/chains/api","contentType":"directory"},{"name. With the data added to the vectorstore, we can initialize the chain. These chat elements are designed to be used in conjunction with each other, but you can also use them separately. A summarization chain can be used to summarize multiple documents. We introduce a conversational QA architecture that sets the new state of the art on the TREC CAsT 2019. Asking for help, clarification, or responding to other answers. the process of finding and bringing back…. chains'. Are you using the chat history as a context inside your prompt template. Conversational Retrieval Agents. This alert has been successfully added and will be sent to: You will be notified whenever a record that you have chosen has been cited. LangChain Data Loaders, Tokenizers, Chunking, and Datasets - Data Prep 101. AIMessage(content=' Triangles do not have a "square". Question answering (QA) systems provide a way of querying the information available in various formats including, but not limited to, unstructured and structured data in natural languages. In ChatGPT Prompt Engineering for Developers, you will learn how to use a large language model (LLM) to quickly build new and powerful applications. It can be hard to debug a Chain object solely from its output as most Chain objects involve a fair amount of input prompt preprocessing and LLM output post-processing. when I ask "which was my l. 1 from langchain. Chat Models take a list of chat messages as input - this list commonly referred to as a prompt. 5), which has to rely on the documents retrieved by the document search module to. We will pass the prompt in via the chain_type_kwargs argument. This is done so that this question can be passed into the retrieval step to fetch relevant. Adding the Conversational Retrieval QA Chain Node The final node that we are going to add is the Conversational Retrieval QA Chain node (under the Chains group). To start, we will set up the retriever we want to use, then turn it into a retriever tool. The algorithm for this chain consists of three parts: 1. System Info ConversationalRetrievalChain with Question Answering with sources llm = OpenAI(temperature=0) question_generator = LLMChain(llm=llm, prompt=CONDENSE_QUESTION_PROMPT) doc_chain = load_qa. Thanks for the reply and the explanation, it's more clear for me how the , I'm trying to build and API endpoint capable of receive a question and give a response based on some . ust. openai import OpenAIEmbeddings from langchain. It constitutes a considerable part of conversational artificial intelligence (AI) which has led to the introduction of a special research topic on Conversational Question Answering (CQA), wherein a system is. category = 'Chains' this. com amadotto@connect. {"payload":{"allShortcutsEnabled":false,"fileTree":{"langchain/chains/retrieval_qa":{"items":[{"name":"__init__. TL;DR: We are adjusting our abstractions to make it easy for other retrieval methods besides the LangChain VectorDB object to be used in LangChain. . How can I create a bot, that will send a response based on custom data. ust. View Ebenezer’s full profile. You switched accounts on another tab or window. chains. For more examples of how to test different embeddings, indexing strategies, and architectures, see the Evaluating RAG Architectures on Benchmark Tasks notebook. . This is done with the goals of (1) allowing retrievers constructed elsewhere to be used more easily in LangChain, (2) encouraging more experimentation with alternative retrieval methods (like. One way is to input multiple smaller documents, after they have been divided into chunks, and operate over them with a MapReduceDocumentsChain. But wait… the source is the file that was chunked and uploaded to Pinecone. chains import ConversationalRetrievalChain 3 4 model = ChatOpenAI (model='gpt-3. The columns normally represent features, while the records stand for individual data points. Now get embeddings and store in Chroma (note: you need an OpenAI API token to run this code) embeddings = OpenAIEmbeddings () vectorstore = Chroma. . icon = 'chain. If you want to replace it completely, you can override the default prompt template: template = """ {summaries} {question} """ chain = RetrievalQAWithSourcesChain. The algorithm for this chain consists of three parts: 1. Gone are the days when we needed separate models for classification, named entity recognition (NER), question-answering (QA. g. A chain for scoring the output of a model on a scale of 1-10. This customization steps requires. g. The algorithm for this chain consists of three parts: 1. g. 1. Answer. RAG with Agents This is an agent specifically optimized for doing retrieval when necessary and also holding a conversation. Beta Was this translation helpful? Give feedback. . qa = ConversationalRetrievalChain. ConversationalRetrievalQAChain Class ConversationalRetrievalQAChain Class for conducting conversational question-answering tasks with a retrieval [email protected] - a chatbot that does a retrieval step to start - is one of our most popular chains. But there's no mention of qa_prompt in ConversationalRetrievalChain, or its base chain. Researchers, educators and companies are experimenting with ways to turn flawed but famous large language models into trustworthy, accurate ‘thought partners’ for learning. 🤖. CoQA contains 127,000+ questions with. "Chain conversational_retrieval_chain expects multiple inputs, cannot use 'run'" To Reproduce Steps to reproduce the behavior: Follo. Update: This post answers the first part of OP's question:. Generated by DALL-E 2 Table of Contents. Retrieval Agents. Using Conversational Retrieval QA | 🦜️🔗 Langchain. They can also be customised to perform a wide variety of natural language tasks such as: translation, summarization, question-answering, etc. . However, what is passed in only question (as query) and NOT summaries. 3. Thanks for contributing an answer to Stack Overflow! Please be sure to answer the question. This guide will show you how to: Finetune DistilBERT on the SQuAD dataset for extractive question answering. Hi, @DennisPeeters!I'm Dosu, and I'm here to help the LangChain team manage their backlog. Hi, thanks for this amazing tool. Compare the output of two models (or two outputs of the same model). chains. from_llm(OpenAI(temperature=0. Welcome to the integration guide for Pinecone and LangChain. {"payload":{"allShortcutsEnabled":false,"fileTree":{"langchain/chains/qa_with_sources":{"items":[{"name":"__init__. He also said that she is a consensus. prompt object is defined as: PROMPT = PromptTemplate (template=template, input_variables= ["summaries", "question"]) expecting two inputs summaries and question. To resolve the type mismatch issue when adding the KBSearchTool to the list of tools in your LangChainJS application, you need to ensure that the KBSearchTool class extends either the StructuredTool or Tool class from the tools. chains import [email protected]. Langflow uses LangChain components. chains import ConversationChain. text_input (. The ConversationalRetrievalQA chain builds on RetrievalQAChain to provide a chat history component. I wanted to let you know that we are marking this issue as stale. s , , = · + ˝ · + · + ˝ · + +You can create custom prompt templates that format the prompt in any way you want. A Comparison of Question Rewriting Methods for Conversational Passage Retrieval. Conversational search is one of the ultimate goals of information retrieval. Specifically, this deals with text data. Learn more. This is done so that this question can be passed into the retrieval step to fetch relevant. It first combines the chat history (either explicitly passed in or retrieved from the provided memory) and the question, then looks up relevant. These chat messages differ from raw string (which you would pass into a LLM model) in that every. They are named in reverse order so. In this article we will walk through step-by-step a coded example of creating a simple conversational document retrieval agent using LangChain, the pre-eminent package for developing large language… Hello everyone. A template may include instructions, few-shot examples, and specific context and questions appropriate for a given task. Current methods rely on the dual-encoder architecture to embed contextualized vectors of questions in conversations. As of today, OpenAI doesn't train models on inputs and outputs through API, as stated in the official OpenAI documentation: But, technically speaking, once you make a request to the OpenAI API, you send data to the outside world. Hello, Based on the information you provided and the context from the LangChain repository, there are a couple of ways you can change the final prompt of the ConversationalRetrievalChain without modifying the LangChain source code. I tried to chain. prompt (prompt_template=prompt_text, query=query, contexts=joined_contexts) print (output [0]) This will yield short answer instead of list of options: V adm 60 km/h. 4. how do i add memory to RetrievalQA. See the task. In this paper, we show that question rewriting (QR) of the conversational context allows to shed more light on this phenomenon and also use it to evaluate robustness of different answer selection approaches. . You can also choose instead for the chain that does summarization to be a StuffDocumentsChain, or a RefineDocumentsChain. 它首先将聊天历史(可以是显式传入的或从提供的内存中检索到的)和问题合并成一个独立的问题,然后从检索器中查找相关文档,最后将这些. This walkthrough demonstrates how to use an agent optimized for conversation. py which contains both CONDENSE_QUESTION_PROMPT and QA_PROMPT. js and OpenAI Functions. """ from __future__ import annotations import warnings from abc import abstractmethod from pathlib import Path from typing import Any, Callable, Dict, List, Optional, Tuple, Union from pydantic import Extra, Field, root_validator from. Introduction; Useful Resources; Agent Code - Configuration - Import Packages - The Retriever - The Retriever Tool - The Memory - The Prompt Template - The Agent - The Agent Executor; Inference; Conclusion; Introduction. Open. , "D", as you mentioned on your comment), the response should only include information from that particular document without interference from the content of other documents (A, B, C, E), you should store and query the embeddings for each. Yet we've never really put all three of these concepts together. , Python) Below we will review Chat and QA on Unstructured data. RAG with Agents. dosubot bot mentioned this issue on Sep 16. LlamaIndex. {"payload":{"allShortcutsEnabled":false,"fileTree":{"docs/extras/use_cases/question_answering/how_to":{"items":[{"name":"code","path":"docs/extras/use_cases/question. Is it possible to have the component called "Conversational Retrieval QA Chain", but that would use a memory buffer ? To remember the rest of the conversation, not only the last prompt. data can include many things, including: Unstructured data (e. One of the pieces of external data we wanted to enable question-answering over was our documentation. name = 'conversationalRetrievalQAChain' this. The answer is not simple. This documentation covers the steps to integrate Pinecone, a high-performance vector database, with LangChain, a framework for building applications powered by large language models (LLMs). There doesn't seem to be any obvious tutorials for this but I noticed "Pydantic" so I tried to do this: saved_dict = conversation. A chain for scoring the output of a model on a scale of 1-10. This node is based on the Retrieval QA Chain node, and it provides a chat history component, allowing you to hold a conversation with the LLM. For example, if the class is langchain. Custom ChatGPT Implementation: A custom implementation of ChatGPT made with Next. # RetrievalQA. , Python) Below we will review Chat and QA on Unstructured data. When you’re looking for answers from AI, there can be a couple of hurdles to cross. These models help developers to build powerful yet responsible Generative AI. There is an accompanying GitHub repo that has the relevant code referenced in this post. Yet we've never really put all three of these concepts together. LlamaIndex is a software tool designed to simplify the process of searching and summarizing documents using a conversational interface powered by large language models (LLMs). In this step, we will take advantage of the existing templates in the Marketplace. It formats the prompt template using the input key values provided (and also memory key. First, it’s very hard to know exactly where the AI is pulling the answer from. Cookbook. Conversational agent for a chat model which utilize chat specific prompts and buffer memory. e. 51% which is addressed by the paper that it could be improved with more datasets. g. You must provide the AI with the metadata and instruct it to translate any queries/questions to German and use it to retrieve the relevant chunks with the. Im creating a text document QA chatbot, Im using Langchainjs along with OpenAI LLM for creating embeddings and Chat and Pinecone as my vector Store. However, I'm curious whether RetrievalQA supports replying in a streaming manner. To create a conversational question-answering chain, you will need a retriever. This is done so that this. e. After that, you can generate a SerpApi API key. You switched accounts on another tab or window. source : Chroma class Class Code. The sources are not. 1. Langflow uses LangChain components. Retrieval QA. LangChain is a framework for developing applications powered by language models. This example uses Chinook database, which is a sample database available for SQL Server, Oracle, MySQL, etc. , PDFs) Structured data (e. This model’s maximum context length is 16385 tokens. llm, retriever=vectorstore. Source code for langchain. Finally, we will walk through how to construct a. Use the chat history and the new question to create a "standalone question". From almost the beginning we've added support for memory in agents. , SQL) Code (e. Here's how you can modify your code and text: # Define the input variables for your custom prompt input_variables = ["history", "context. Set up a question-and-answer chain with ConversationalRetrievalQA - a chatbot that does a retrieval step to start - is one of our most popular chains. memory. 1. LangChain provides tooling to create and work with prompt templates. LangChain の ConversationalRetrievalChain の使い方。自社ドキュメントなどをベースにQAを作成するときに、ちゃんとチャットの履歴を踏まえてQAを実行させるモジュール。その動作やカスタマイズ方法なども現状分かっている範囲でできる限り詳しく解説(というかメモ)Here, we introduce a simple tool for evaluating QA chains ( see the code here) called auto-evaluator. I wanted to let you know that we are marking this issue as stale. Grade, tag, or otherwise evaluate predictions relative to their inputs and/or reference labels. ConversationalRetrievalChainでは、まずLLMが質問と会話履歴. AI chatbot producing structured output with Next. dict () cm = ChatMessageHistory (**saved_dict) # or. However, this architecture is limited in the embedding bottleneck and the dot-product operation. Compare the output of two models (or two outputs of the same model). With our conversational retrieval agents we capture all three aspects. Reload to refresh your session. Saved searches Use saved searches to filter your results more quicklyFrequently Asked Questions. ConversationChain does not have memory to remember historical conversation #2653. To see the performance of various embedding…. Saved searches Use saved searches to filter your results more quickly检索型问答(Retrieval QA). In conclusion, both LangFlow and Flowise provide developers with powerful tools for streamlined language processing. In the below example, we will create one from a vector store, which can be created from. This post takes you through the most common challenges that customers face when searching internal documents, and gives you concrete guidance on how AWS services can be used to create a generative AI conversational bot that makes internal information more useful. classmethod get_lc_namespace() → List[str] ¶. LangChain cookbook. Below is a list of the available tasks at the time of writing. We utilize identifier strings, i. Here's how you can modify your code and text: # Define the input variables for your custom prompt input_variables = ["history",. With our conversational retrieval agents we capture all three aspects. Distributing Routes allows organizations to democratize access to LLMs while also ensuring user behavior doesn't abuse or take. vectorstores import Chroma db = Chroma (embedding_function=OpenAIEmbeddings ()) texts = [ """. . , Tool, initialize_agent. To address this limitation, we introduce an open-retrieval conversational question answering (ORConvQA) setting, where we learn to retrieve evidence from a large collection before extracting answers, as a further step towards building functional conversational search systems. Open Source LLMs. # doc string prompt # prompt_template = """You are a Chat customer support agent. As queries in information seeking dialogues are ambiguous for traditional ad-hoc information retrieval (IR) systems due to the coreference and omission resolution problems inherent in natural language dialogue, resolving these ambiguities is crucial. The returned container can contain any Streamlit element, including charts, tables, text, and more. Get the namespace of the langchain object. Quest - Words of Wisdom - Answer Key 1998-01 libros de energia para madrugadores early bird energy teaching guide Quest - the Only True God 2011-07Question answering (QA) systems provide a way of querying the information available in various formats including, but not limited to, unstructured and structured data in natural languages. js. The LLMChainExtractor uses an LLMChain to extract from each document only the statements that are relevant to the query. You signed in with another tab or window. We deal with all types of Data Licensing be it text, audio, video, or image. The chain is having trouble remembering the last question that I have made, i. It constitutes a considerable part of conversational artificial intelligence (AI) which has led to the introduction of a special research topic on Conversational. Also, if you want to enforce further your privacy you can instantiate PandasAI with enforce_privacy = True which will not send the head (but just. 266', so maybe install that instead of '0. Here is the link from Langchain. They consider using ConversationalRetrievalQA which works in a chat-like manner instead of a single-time prompt. from_llm() function not working with a chain_type of "map_reduce". Our chatbot starts with the ConversationalRetrievalQA chain, ConversationalRetrievalChain, which builds on RetrievalQAChain to provide a chat history component. qa = ConversationalRetrievalChain. qa_with_sources. vectors. from_llm (llm=llm. Here is the link from Langchain. The types of the evaluators. py","path":"libs/langchain/langchain. Streamlit provides a few commands to help you build conversational apps. Langchain vectorstore for chat history. We've seen in previous chapters how powerful retrieval augmentation and conversational agents can be. py. life together! AI-powered Finance Solution for a UK Commercial Bank, Case Study. Let’s bring your idea to. base. This post takes you through the most common challenges that customers face when searching internal documents, and gives you concrete guidance on how AWS services can be used to create a generative AI conversational bot that makes internal information more useful. Chat prompt template . Save the new project as “TalkToPDF”. After that, you can generate a SerpApi API key. A user study reveals that our system leads to a better quality perception by users. Embark on an enlightening journey through the world of document-based question-answering chatbots using langchain! With a keen focus on detailed explanations and code walk-throughs, you’ll gain a deep understanding of each component - from creating a vector database to response generation. EmilioJD closed this as completed on Jun 20. Replies: 1 comment Oldest; Newest; Top; Comment options {{title}} Something went wrong. from_llm ( llm=OpenAI (temperature=0), retriever=vectorstore. I use Chromadb as a vectorstore to store the chat history and search relevant pieces of information when needed. Listen to the audio pronunciation in English. . Hi, @DennisPeeters!I'm Dosu, and I'm here to help the LangChain team manage their backlog. Retrieval Augmentation Reduces Hallucination in Conversation Kurt Shuster, Spencer Poff, Moya Chen, Douwe Kiela, Jason Weston Facebook AI ResearchHow can I add a custom chain prompt for Conversational Retrieval QA Chain? When I ask a question that is unrelated to the context I stored in Pinecone, the Conversational Retrieval QA Chain currently answers with some random text. ConversationalRetrievalQA - a chatbot that does a retrieval step to start - is one of our most popular chains. We create a dataset, OR-QuAC, to facilitate research on. It first combines the chat history. First, it might be helpful to view the existing prompt template that is used by your chain: This will print out the prompt, which will comes from here. Generate a question-answering chain with a specified set of UI-chosen configurations. How can I optimize it to improve response. Example const model = new ChatAnthropic( {}); 8 You can pass your prompt in ConversationalRetrievalChain. A square refers to a shape with 4 equal sides and 4 right angles. For more information, see Custom Prompt Templates. Click “Upload File” in “PDF File” and upload a sample pdf file titled “Introduction to AWS Security”. Reference issue: logancyang#98 When opening an issue, please include relevant console logs. Let’s create one. EDIT: My original tool definition doesn't work anymore as of 0. Search Search. 这个示例展示了在索引上进行问答的过程。. Next, we need data to build our chatbot. You signed out in another tab or window. For example, if the class is langchain. the process of finding and bringing back something: 2. We would like to show you a description here but the site won’t allow us. Update #2: I've transitioned to using agents instead and it solves the problem with Conversational Retrieval QA Chain about the chat histories. You signed in with another tab or window. You can add your custom prompt with the combine_docs_chain_kwargs parameter: combine_docs_chain_kwargs= {"prompt": prompt} You can change your code. It first combines the chat history and the question into a single question. From almost the beginning we've added support for. Hi, @miha-bhaskaran!I'm Dosu, and I'm helping the LangChain team manage our backlog. receive chat history and custom knowledge source2 days ago · Thanks for contributing an answer to Stack Overflow! Please be sure to answer the question. question_answering import load_qa_chain from langchain. Use the chat history and the new question to create a "standalone question".