AbeerTrial's picture
Upload folder using huggingface_hub
8a58cf3
"""Subclasses from base prompt."""
from typing import List
from gpt_index.prompts.base import Prompt
from gpt_index.prompts.prompt_type import PromptType
class SummaryPrompt(Prompt):
"""Summary prompt.
Prompt to summarize the provided `context_str`.
Required template variables: `context_str`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.SUMMARY
input_variables: List[str] = ["context_str"]
class TreeInsertPrompt(Prompt):
"""Tree Insert prompt.
Prompt to insert a new chunk of text `new_chunk_text` into the tree index.
More specifically, this prompt has the LLM select the relevant candidate
child node to continue tree traversal.
Required template variables: `num_chunks`, `context_list`, `new_chunk_text`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.TREE_INSERT
input_variables: List[str] = ["num_chunks", "context_list", "new_chunk_text"]
class TreeSelectPrompt(Prompt):
"""Tree select prompt.
Prompt to select a candidate child node out of all child nodes
provided in `context_list`, given a query `query_str`. `num_chunks` is
the number of child nodes in `context_list`.
Required template variables: `num_chunks`, `context_list`, `query_str`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.TREE_SELECT
input_variables: List[str] = ["num_chunks", "context_list", "query_str"]
class TreeSelectMultiplePrompt(Prompt):
"""Tree select multiple prompt.
Prompt to select multiple candidate child nodes out of all
child nodes provided in `context_list`, given a query `query_str`.
`branching_factor` refers to the number of child nodes to select, and
`num_chunks` is the number of child nodes in `context_list`.
Required template variables: `num_chunks`, `context_list`, `query_str`,
`branching_factor`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type = PromptType.TREE_SELECT_MULTIPLE
input_variables: List[str] = [
"num_chunks",
"context_list",
"query_str",
"branching_factor",
]
class RefinePrompt(Prompt):
"""Refine prompt.
Prompt to refine an existing answer `existing_answer` given a context `context_msg`,
and a query `query_str`.
Required template variables: `query_str`, `existing_answer`, `context_msg`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
# TODO: rename context_msg to context_str
prompt_type: PromptType = PromptType.REFINE
input_variables: List[str] = ["query_str", "existing_answer", "context_msg"]
class QuestionAnswerPrompt(Prompt):
"""Question Answer prompt.
Prompt to answer a question `query_str` given a context `context_str`.
Required template variables: `context_str`, `query_str`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.QUESTION_ANSWER
input_variables: List[str] = ["context_str", "query_str"]
class KeywordExtractPrompt(Prompt):
"""Keyword extract prompt.
Prompt to extract keywords from a text `text` with a maximum of
`max_keywords` keywords.
Required template variables: `text`, `max_keywords`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.KEYWORD_EXTRACT
input_variables: List[str] = ["text", "max_keywords"]
class QueryKeywordExtractPrompt(Prompt):
"""Query keyword extract prompt.
Prompt to extract keywords from a query `query_str` with a maximum
of `max_keywords` keywords.
Required template variables: `query_str`, `max_keywords`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.QUERY_KEYWORD_EXTRACT
input_variables: List[str] = ["question", "max_keywords"]
class SchemaExtractPrompt(Prompt):
"""Schema extract prompt.
Prompt to extract schema from unstructured text `text`.
Required template variables: `text`, `schema`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.SCHEMA_EXTRACT
input_variables: List[str] = ["text", "schema"]
class TextToSQLPrompt(Prompt):
"""Text to SQL prompt.
Prompt to translate a natural language query into SQL,
given a schema `schema`.
Required template variables: `query_str`, `schema`
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.TEXT_TO_SQL
input_variables: List[str] = ["query_str", "schema"]
class TableContextPrompt(Prompt):
"""Table context prompt.
Prompt to generate a table context given a table schema `schema`,
as well as unstructured text context `context_str`, and
a task `query_str`.
This includes both a high-level description of the table
as well as a description of each column in the table.
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.TABLE_CONTEXT
input_variables: List[str] = ["schema", "context_str", "query_str"]
class RefineTableContextPrompt(Prompt):
"""Refine Table context prompt.
Prompt to refine a table context given a table schema `schema`,
as well as unstructured text context `context_msg`, and
a task `query_str`.
This includes both a high-level description of the table
as well as a description of each column in the table.
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
# TODO: rename context_msg to context_str
prompt_type: PromptType = PromptType.TABLE_CONTEXT
input_variables: List[str] = [
"schema",
"context_msg",
"query_str",
"existing_answer",
]
class KnowledgeGraphPrompt(Prompt):
"""Define the knowledge graph triplet extraction prompt."""
prompt_type: PromptType = PromptType.KNOWLEDGE_TRIPLET_EXTRACT
input_variables: List[str] = ["max_knowledge_triplets", "text"]
class SimpleInputPrompt(Prompt):
"""Simple Input prompt.
Required template variables: `query_str`.
Args:
template (str): Template for the prompt.
**prompt_kwargs: Keyword arguments for the prompt.
"""
prompt_type: PromptType = PromptType.SIMPLE_INPUT
input_variables: List[str] = ["query_str"]