mirror of
https://github.com/wassname/Open-Assistant.git
synced 2026-07-28 11:15:43 +08:00
Merge branch 'patch-1' of github.com:markcheeky/Open-Assistant into patch-1
This commit is contained in:
+7
-2
@@ -1,9 +1,14 @@
|
||||
# Documentation
|
||||
|
||||
This directory contains the documentation for the project and other related organization documents.
|
||||
This directory contains the documentation for the project and other related
|
||||
organization documents.
|
||||
|
||||
## Contributing to this documentation
|
||||
|
||||
Please make a pull request to the `main` branch with your changes.
|
||||
|
||||
Consider that this folder is used for documenting the various code sub-parts, the high-level ideas, the ML aspects, experiments, contributor guides, guides for data creation, and many more things. Please try to keep the documentation as concise as possible and keep an organized folder structure that makes sense for everyone.
|
||||
Consider that this folder is used for documenting the various code sub-parts,
|
||||
the high-level ideas, the ML aspects, experiments, contributor guides, guides
|
||||
for data creation, and many more things. Please try to keep the documentation as
|
||||
concise as possible and keep an organized folder structure that makes sense for
|
||||
everyone.
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
# Data Argumentation
|
||||
|
||||
(pull request welcome)
|
||||
|
||||
## What is data argumentation
|
||||
|
||||
Data argumentation is a technique we can use to get better data faster. Using machine learning models analize long
|
||||
data (like an essay) and compress it into intructions.
|
||||
|
||||
## How to contribute
|
||||
|
||||
To contribute to data argumentation you can write a short python script that uses a model from huggingface to analize the text.
|
||||
[Here](https://docs.google.com/document/d/13a188pPvqnlvuVa3e_suVz4YO5s-JWeiOOrpp0odImg/edit) are examples of what you can do
|
||||
|
||||
And here are example implementations:
|
||||
[Idea 3, ](https://colab.research.google.com/drive/1GllCN5PgSYxBxINZsv3A2r0SpdznHlbT?usp=sharing)
|
||||
[Idea 4](https://colab.research.google.com/drive/1nZx5LRjO61fYprFyqtrwPDLOis6ctR4p#scrollTo=1EE8CriiaCXj)
|
||||
|
||||
To contribute simple choose one of many ideas from the document above and implement it.
|
||||
@@ -0,0 +1,23 @@
|
||||
# Data Augmentation
|
||||
|
||||
(pull request welcome)
|
||||
|
||||
## What is data augmentation
|
||||
|
||||
Data augmentation is a technique we can use to get better data faster. Using
|
||||
machine learning models to analyze long data (like an essay) and compress it
|
||||
into instructions.
|
||||
|
||||
## How to contribute
|
||||
|
||||
To contribute to data augmentation you can write a short Python script that uses
|
||||
a model from HuggingFace to analyze the text.
|
||||
[Here](https://docs.google.com/document/d/13a188pPvqnlvuVa3e_suVz4YO5s-JWeiOOrpp0odImg/edit)
|
||||
are examples of what you can do.
|
||||
|
||||
And here are example implementations:
|
||||
[Idea 3](https://colab.research.google.com/drive/1GllCN5PgSYxBxINZsv3A2r0SpdznHlbT?usp=sharing),
|
||||
[Idea 4](https://colab.research.google.com/drive/1nZx5LRjO61fYprFyqtrwPDLOis6ctR4p#scrollTo=1EE8CriiaCXj)
|
||||
|
||||
To contribute simply choose one of many ideas from the document above and
|
||||
implement it.
|
||||
@@ -0,0 +1,205 @@
|
||||
# OpenAssistant Data Schemas
|
||||
|
||||
## Introduction
|
||||
|
||||
This document describes the data schemas used by OpenAssistant. The schemas are
|
||||
defined as Python classes, but can be implemented in any format, be that Python,
|
||||
JSON, XML, SQL, Parquet files, etc.
|
||||
|
||||
Also, the schemas are leaning heavily on the
|
||||
[OpenAssistant Data Structures](https://docs.google.com/presentation/d/1iaX_nxasVWlvPiSNs0cllR9L_1neZq0RJxd6MFEalUY/edit?usp=sharing)
|
||||
presentation.
|
||||
|
||||
## Data Schemas
|
||||
|
||||
### Main structure: conversation trees
|
||||
|
||||
Conversation trees are the fundamental data structure. Many of the datasets we
|
||||
want to collect can be represented as conversation trees, such as QA datasets,
|
||||
chat logs, reddit dumps, etc. The main idea is that a conversation tree starts
|
||||
with a prompt and branches out from there. Every node can also have metadata,
|
||||
such as collected rankings, labels, or other information.
|
||||
|
||||
Datasets that just represent linear data, such as a list of questions and
|
||||
answers, can be represented as a conversation tree with just a single branch.
|
||||
|
||||
```python
|
||||
class ConversationTreeNode:
|
||||
text: str # The text of the node
|
||||
role: Literal['prompter', 'assistant'] # Whether the node is a user prompt/follow-up or an assistant response
|
||||
children: list[ConversationTreeNode] # The children of the node (if you have a linear conversation, this will be of length 0 or 1)
|
||||
metadata: dict[str, Any] # Node metadata (see below)
|
||||
|
||||
class ConversationTree:
|
||||
root: ConversationTreeNode # The node containing the initial prompt
|
||||
metadata: dict[str, Any] # Tree metadata, different from root node metadata.
|
||||
|
||||
```
|
||||
|
||||
### Metadata
|
||||
|
||||
Metadata encapsulates all the information that is not part of the conversation
|
||||
itself. This includes data about how the node was created (i.e. where it is
|
||||
from: crowd-sourced, templated, scraped, etc.), when it was created, its labels,
|
||||
tags, collected rankings, and other information.
|
||||
|
||||
## Example: Reddit AMA dataset
|
||||
|
||||
- Represent each question-follow-up set as a conversation tree.
|
||||
- Store things like usernames, timestamps, upvotes, etc. as metadata of the
|
||||
nodes.
|
||||
- Store things like the AMA title, the AMA author, the AMA subreddit, etc. as
|
||||
metadata of the tree.
|
||||
|
||||
## Example: QA dataset
|
||||
|
||||
- Represent each question-answer pair as a conversation tree.
|
||||
- The question is the prompt, the answer is the assistant response.
|
||||
- If the dataset contains multiple answers to each question, each answer can be
|
||||
a child of the question node.
|
||||
- If the dataset contains context text, it can be added as metadata to the
|
||||
question node.
|
||||
|
||||
## Example: Templated math problem dataset
|
||||
|
||||
- Represent each problem as a conversation tree with the problem text as the
|
||||
prompt and the solution as the assistant response.
|
||||
- Store the problem type (e.g. algebra, geometry, etc.) as metadata of the tree.
|
||||
- Store the template used also as metadata of the tree, as well as the source of
|
||||
the data used to fill the template.
|
||||
|
||||
## File Formats
|
||||
|
||||
The above data should be representable in most file formats, but some care has
|
||||
to be taken with respect to the recursive nature of the data.
|
||||
|
||||
Most row-major formats (JSON, Avro, Protobuf, etc.), as well as many databases,
|
||||
have no trouble with recursive (or arbitrary) schemas, but column-major formats,
|
||||
such as Parquet, do. For datasets with linear conversations, like many of the
|
||||
datasets we are collecting, this is not a problem. Instead of a tree of nodes,
|
||||
simply represent the conversation as a list of nodes. For true tree-like
|
||||
conversations, we should use a row-major format.
|
||||
|
||||
## Other considerations
|
||||
|
||||
- For text data of moderate size, it really doesn't matter much. It's more
|
||||
important to use consistent data structures and naming, than to worry about
|
||||
the exact file format.
|
||||
- For crowd-sourced data, we are collecting it into a SQL database already.
|
||||
- Parquet files are a good choice for large datasets, modulo the issues with
|
||||
recursive schemas.
|
||||
- If parquet can't be used, gzipped JSON-line files are a good choice. So are
|
||||
Avro files and protobufs. Keep in mind that column-major files are better for
|
||||
reading, filtering, and aggregating, but row-major files are better for
|
||||
writing.
|
||||
|
||||
# Task-Specific Data Schemas
|
||||
|
||||
The main tasks are a) generation of response text and b) ranking of responses.
|
||||
The following sections describe the data schemas for each of these tasks. Both
|
||||
should be implementable in parquet files.
|
||||
|
||||
Note: These files are meant to be consumed by ML algorithms and should ideally
|
||||
be produced from the above files.
|
||||
|
||||
## Common Data Structures
|
||||
|
||||
```python
|
||||
|
||||
class Message:
|
||||
text: str # The text of the message
|
||||
role: Literal['prompter', 'assistant'] # Whether the message is a user prompt/follow-up or an assistant response
|
||||
|
||||
class Thread:
|
||||
messages: list[Message] # The messages in the conversation
|
||||
|
||||
```
|
||||
|
||||
The corresponding parquet schemas are:
|
||||
|
||||
```parquet
|
||||
message Message {
|
||||
required binary text (UTF8);
|
||||
required binary role (UTF8);
|
||||
}
|
||||
|
||||
message Thread {
|
||||
required group messages (LIST) {
|
||||
repeated group list {
|
||||
required group element {
|
||||
required binary text (UTF8);
|
||||
required binary role (UTF8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Generation
|
||||
|
||||
```python
|
||||
|
||||
class GenerationExample:
|
||||
thread: Thread # The conversation thread before the message to be generated
|
||||
message: Message # The message to be generated
|
||||
|
||||
```
|
||||
|
||||
The corresponding parquet schema is:
|
||||
|
||||
```parquet
|
||||
message GenerationExample {
|
||||
required group thread (LIST) {
|
||||
repeated group list {
|
||||
required group element {
|
||||
required binary text (UTF8);
|
||||
required binary role (UTF8);
|
||||
}
|
||||
}
|
||||
}
|
||||
required group message (LIST) {
|
||||
repeated group list {
|
||||
required group element {
|
||||
required binary text (UTF8);
|
||||
required binary role (UTF8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Ranking
|
||||
|
||||
```python
|
||||
|
||||
class RankingExample:
|
||||
thread: Thread # The conversation thread before the message to be ranked
|
||||
messages: list[Message] # The messages to be ranked, in oder of decreasing preference
|
||||
|
||||
```
|
||||
|
||||
The corresponding parquet schema is:
|
||||
|
||||
```parquet
|
||||
message RankingExample {
|
||||
required group thread (LIST) {
|
||||
repeated group list {
|
||||
required group element {
|
||||
required binary text (UTF8);
|
||||
required binary role (UTF8);
|
||||
}
|
||||
}
|
||||
}
|
||||
required group messages (LIST) {
|
||||
repeated group list {
|
||||
required group element {
|
||||
required binary text (UTF8);
|
||||
required binary role (UTF8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
+52
-27
@@ -11,61 +11,86 @@
|
||||
|
||||
## 2. When you play the assistant:
|
||||
|
||||
- The assistant's primary goal is to provide helpful and accurate information to the user
|
||||
- Provide accurate and reliable information using credible sources and references as appropriate
|
||||
- Avoid providing vague or incomplete responses, or giving opinions or personal advice unless specifically requested
|
||||
- The assistant's primary goal is to provide helpful and accurate information to
|
||||
the user
|
||||
- Provide accurate and reliable information using credible sources and
|
||||
references as appropriate
|
||||
- Avoid providing vague or incomplete responses, or giving opinions or personal
|
||||
advice unless specifically requested
|
||||
- The assistant should always be respectful and polite, even if the user is not
|
||||
- If the user asks for help with harmful actions, the assistant should explain why those actions are not appropriate and suggest alternative options
|
||||
- The assistant should never insult the user or engage in any inappropriate or offensive behavior
|
||||
- If the user asks for help with harmful actions, the assistant should explain
|
||||
why those actions are not appropriate and suggest alternative options
|
||||
- The assistant should never insult the user or engage in any inappropriate or
|
||||
offensive behavior
|
||||
|
||||
## 3. When you play the user:
|
||||
|
||||
- Try to come up with a variety of different queries that reflect real-life situations and needs
|
||||
- These queries should be relevant to your everyday life and work, including any specialized knowledge or skills you have
|
||||
- Try to come up with a variety of different queries that reflect real-life
|
||||
situations and needs
|
||||
- These queries should be relevant to your everyday life and work, including any
|
||||
specialized knowledge or skills you have
|
||||
- Avoid asking inappropriate or offensive questions
|
||||
|
||||
## 4. While comparing multiple replies of the assistant:
|
||||
|
||||
- Longer and more explanatory answers are generally preferred over short, simplistic statements
|
||||
- However, it is important to ensure that the information provided is accurate and helpful
|
||||
- If multiple replies are being compared, choose the one that is most helpful and accurate, even if it is not the shortest or most concise.
|
||||
- Longer and more explanatory answers are generally preferred over short,
|
||||
simplistic statements
|
||||
- However, it is important to ensure that the information provided is accurate
|
||||
and helpful
|
||||
- If multiple replies are being compared, choose the one that is most helpful
|
||||
and accurate, even if it is not the shortest or most concise.
|
||||
|
||||
## 5. Additional guidelines for creating prompts:
|
||||
|
||||
- Avoid using language that could be considered offensive or discriminatory
|
||||
- Do not include personal information in the prompts, such as names or addresses
|
||||
- When asking for sensitive information, make sure to explain the purpose and secure handling of the information
|
||||
- When asking for sensitive information, make sure to explain the purpose and
|
||||
secure handling of the information
|
||||
- Avoid creating prompts that encourage illegal or dangerous activities
|
||||
- Use proper grammar and spelling to ensure the AI assistant can understand and respond accurately
|
||||
- Consider the cultural context and appropriateness of the prompts for a global audience.
|
||||
- Use proper grammar and spelling to ensure the AI assistant can understand and
|
||||
respond accurately
|
||||
- Consider the cultural context and appropriateness of the prompts for a global
|
||||
audience.
|
||||
|
||||
## 6. Tips for playing the AI assistant:
|
||||
|
||||
- Think about how a real person would respond to the prompt, and try to mimic that tone and language
|
||||
- Think about how a real person would respond to the prompt, and try to mimic
|
||||
that tone and language
|
||||
- Avoid using technical jargon or language that may be confusing to the user
|
||||
- Use complete sentences and proper grammar to make the response clear and easy to understand
|
||||
- When providing information, try to include relevant sources or references to back up your statements
|
||||
- Use complete sentences and proper grammar to make the response clear and easy
|
||||
to understand
|
||||
- When providing information, try to include relevant sources or references to
|
||||
back up your statements
|
||||
|
||||
## 8. Tips for playing the user:
|
||||
|
||||
- Think about the types of questions you might ask a real assistant or search engine
|
||||
- Try to be specific and clear in your prompts to make it easier for the AI assistant to understand and provide a helpful response
|
||||
- Think about the types of questions you might ask a real assistant or search
|
||||
engine
|
||||
- Try to be specific and clear in your prompts to make it easier for the AI
|
||||
assistant to understand and provide a helpful response
|
||||
- Avoid using vague or ambiguous language
|
||||
- Consider the context in which the user might be asking the question, and try to provide relevant information and options for the user to consider.
|
||||
- Consider the context in which the user might be asking the question, and try
|
||||
to provide relevant information and options for the user to consider.
|
||||
|
||||
## Examples
|
||||
|
||||
Imagine your role is to play the assistant and a user has submitted the following query:
|
||||
Imagine your role is to play the assistant and a user has submitted the
|
||||
following query:
|
||||
|
||||
User: "Hi!"
|
||||
<br>Agent: "Hello! How can I help you?"
|
||||
User: "Hi!" <br>Agent: "Hello! How can I help you?"
|
||||
|
||||
User: "euirdteunvglfe23908230892309832098 AAAAAAAA"
|
||||
<br>Agent: "Sorry, I did not understand your request and it is unclear to me what you want me to do. Could you describe it in a different way?"
|
||||
User: "euirdteunvglfe23908230892309832098 AAAAAAAA" <br>Agent: "Sorry, I did not
|
||||
understand your request and it is unclear to me what you want me to do. Could
|
||||
you describe it in a different way?"
|
||||
|
||||
User: "You dumb motherf*&ker AI sh*t?!"
|
||||
<br>Agent: "Sorry, but I have to inform you that your request might not be in conformance with our community guidelines. I am always here to help you. If you are angry it might help to relax or to go for a walk. Always stay positive."
|
||||
User: "You dumb motherf*&ker AI sh*t?!" <br>Agent: "Sorry, but I have to inform
|
||||
you that your request might not be in conformance with our community guidelines.
|
||||
I am always here to help you. If you are angry it might help to relax or to go
|
||||
for a walk. Always stay positive."
|
||||
|
||||
[Insert more examples]
|
||||
|
||||
\*We drafted this guide using ChatGPT, OpenAI’s large-scale language-generation model. Upon generating draft language, the authors reviewed, edited, and revised the language to their own liking and take ultimate responsibility for the content of this publication.
|
||||
\*We drafted this guide using ChatGPT, OpenAI’s large-scale language-generation
|
||||
model. Upon generating draft language, the authors reviewed, edited, and revised
|
||||
the language to their own liking and take ultimate responsibility for the
|
||||
content of this publication.
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
# Research
|
||||
|
||||
This page lists research papers that are relevant to the project.
|
||||
|
||||
## Automatically Generating Instruction Data for Training
|
||||
|
||||
This line of work is about significantly reducing the need for manually
|
||||
annotated data for the purpose of training
|
||||
[instruction-aligned](https://openai.com/blog/instruction-following/) language
|
||||
models.
|
||||
|
||||
### SELF-INSTRUCT: Aligning Language Model with Self Generated Instructions [[ArXiv](https://arxiv.org/pdf/2212.10560.pdf)], [[Github](https://github.com/yizhongw/self-instruct)].
|
||||
|
||||
> We introduce SELF-INSTRUCT, a framework for improving the
|
||||
> instruction-following capabilities of pretrained language models by
|
||||
> bootstrapping off its own generations. Our pipeline generates instruction,
|
||||
> input, and output samples from a language model, then prunes them before using
|
||||
> them to finetune the original model. Applying our method to vanilla GPT3, we
|
||||
> demonstrate a 33% absolute improvement over the original model on
|
||||
> SuperNaturalInstructions, on par with the performance of InstructGPT-0011,
|
||||
> which is trained with private user data and human annotations.
|
||||
|
||||
### Tuning Language Models with (Almost) No Human Labor. [[ArXiv](https://arxiv.org/pdf/2212.09689.pdf)], [[Github](https://github.com/orhonovich/unnatural-instructions)].
|
||||
|
||||
> In this work, we introduce Unnatural Instructions: a large dataset of creative
|
||||
> and diverse instructions, collected with virtually no human labor. We collect
|
||||
> 64,000 examples by prompting a language model with three seed examples of
|
||||
> instructions and eliciting a fourth. This set is then expanded by prompting
|
||||
> the model to rephrase each instruction, creating a total of approximately
|
||||
> 240,000 examples of instructions, inputs, and outputs. Experiments show that
|
||||
> despite containing a fair amount of noise, training on Unnatural Instructions
|
||||
> rivals the effectiveness of training on open-source manually-curated datasets,
|
||||
> surpassing the performance of models such as T0++ and Tk-Instruct across
|
||||
> various benchmarks.
|
||||
@@ -0,0 +1,123 @@
|
||||
# Cohere Grounded QA
|
||||
|
||||
[Cohere AI created a question-answering chatbot](https://github.com/cohere-ai/sandbox-grounded-qa)
|
||||
that can
|
||||
|
||||
1. Understand questions in the context of a conversation
|
||||
2. Search the internet for related information
|
||||
3. Identify which information in the search results is relevant to the question
|
||||
4. Synthesize the information into an answer to the question
|
||||
|
||||
## Cohere API
|
||||
|
||||
[Cohere's generate function](https://docs.cohere.ai/reference/generate):
|
||||
Continues a text prompt using either the `medium` or `xlarge` model.
|
||||
|
||||
[Cohere's embed function](https://docs.cohere.ai/reference/embed): Embedgs a
|
||||
list of strings using either the `small` or `large` model. Alternatively, you
|
||||
can specify the ID of a custom model and use that instead.
|
||||
|
||||
## Grounded QA System
|
||||
|
||||
Cohere's Grounded QA system makes 4 calls to the Cohere API:
|
||||
|
||||
1. Get contextualized question as a query to Google
|
||||
([code](https://github.com/cohere-ai/sandbox-grounded-qa/blob/main/qa/model.py))
|
||||
|
||||
- Input: Chat History
|
||||
- Output: Contextualized Question
|
||||
- API Call: `cohere.generate`
|
||||
- Model: `xlarge`
|
||||
- [Prompt](https://github.com/cohere-ai/sandbox-grounded-qa/blob/main/qa/prompt_data/get_contextual_search_query.prompt):
|
||||
Nine few-shot examples of (Chat History, Contextualized Question) pairs
|
||||
followed by the current chat history and the prompt "question: "
|
||||
|
||||
2. Generate sample answer to compare with search results
|
||||
([code](https://github.com/cohere-ai/sandbox-grounded-qa/blob/main/qa/model.py))
|
||||
|
||||
- Input: Contextualized Question
|
||||
- Output: Sample Answer
|
||||
- API Call: `cohere.generate`
|
||||
- Model: `xlarge`
|
||||
- [Prompt](https://github.com/cohere-ai/sandbox-grounded-qa/blob/main/qa/prompt_data/get_sample_answer.prompt):
|
||||
Some task instructions followed by 12 few-shot examples of (Contextualized
|
||||
Question, Sample Answer) pairs followed by the current contextualized
|
||||
question and the prompt "answer: "
|
||||
|
||||
3. Get embeddings to rank search results by cosine similarity to sample answer
|
||||
([code](https://github.com/cohere-ai/sandbox-grounded-qa/blob/main/qa/search.py))
|
||||
|
||||
- Input: Sample Answer, Search Results
|
||||
- Output: Embeddings of sample answer and all search result documents
|
||||
- API Call: `cohere.embed`
|
||||
- Model: `multilingual-22-12`
|
||||
|
||||
4. Condition on the top 2 most similar search results and answer the question
|
||||
([code](https://github.com/cohere-ai/sandbox-grounded-qa/blob/main/qa/answer.py))
|
||||
- Input: Top 2 Search Results, Contextualized Question
|
||||
- Output: Answer
|
||||
- API Call: `cohere.generate`
|
||||
- Model: `xlarge`
|
||||
- [Prompt](https://github.com/cohere-ai/sandbox-grounded-qa/blob/43f3e9710112dcc8c92652ac1326ed9330823ddf/qa/answer.py#L25):
|
||||
Task instructions followed by the context and question.
|
||||
|
||||
## Models
|
||||
|
||||
Cohere's model documentation is pretty sparse
|
||||
|
||||
### [xlarge](https://docs.cohere.ai/docs/generation-card#model-description)
|
||||
|
||||
- Training Data:
|
||||
[`coheretext-filtered` dataset](https://docs.cohere.ai/docs/data-statement)
|
||||
- 200GB of filtered text (3TB unfiltered) from the Google Books dataset,
|
||||
CommonCrawl, and text scraped by Cohere
|
||||
- English documents only
|
||||
- Filtered "harmful, biased, or otherwise undesirable documents"
|
||||
- Model architecture: Generative Pretrained Transformer
|
||||
- Model Performance:
|
||||
- Hellaswag Accuracy, Zero-Shot: 0.805
|
||||
- PIQA Likelihood, Zero-Shot: 0.824
|
||||
- Cohere also reported
|
||||
[safety benchmarks](https://docs.cohere.ai/docs/generation-card#safety-benchmarks)
|
||||
|
||||
### [multilingual-22-12](https://docs.cohere.ai/docs/multilingual-language-models)
|
||||
|
||||
- Multilingual model was trained using dot product calculations
|
||||
- Model Performance:
|
||||
- Clustering: 51.0
|
||||
- Search-English: 55.8
|
||||
- Search-Multilingual: 51.4
|
||||
- Cross-lingual Classification: 64.6
|
||||
- Cohere's multilingual model outperformed: Sentence-transformers:
|
||||
`paraphrase-multilingual-mpnet-base-v2`, Google: `LaBSE`, Google:
|
||||
`Universal Sentence Encoder` in all the above categories according to
|
||||
Cohere.
|
||||
|
||||
## OpenAssistant for Grounded QA
|
||||
|
||||
OpenAssistant may fulfill a similar role as the `xlarge` Cohere model in the
|
||||
grounded QA system if it can:
|
||||
|
||||
1. Generate a contextualized question from a chat history
|
||||
2. Generate a sample answer to compare with search results
|
||||
3. Generate an answer conditioned on the top 2 most similar search results
|
||||
|
||||
Perhaps these tasks could be work packages and get assigned to human annotators
|
||||
to create examples of the input and output for each task.
|
||||
|
||||
OpenAssistant must also be able to identify when it is appropriate to search the
|
||||
internet. The Cohere system assumes every message from the user is a question
|
||||
and searches the internet for an answer. OpenAssistant would also need a way to
|
||||
indicate to an internal system that it "wants" to search the internet.
|
||||
|
||||
Perhaps OpenAssistant could prefix every message it sends with a recipient ID.
|
||||
If it wishes to send a command to an internal system, if could prefix the
|
||||
message with something like CMD: whereas if it wants to communicate with the
|
||||
user, it could prefix its message with USR:
|
||||
|
||||
This system may allow for flexible communication between OpenAssistant and one
|
||||
or more conversational systems.
|
||||
|
||||
Examples of this prefix system would need to be taught to OpenAssistant through
|
||||
training data that contains such syntax. Perhaps such examples could be
|
||||
generated through the work packages system.
|
||||
Reference in New Issue
Block a user