From 104d57e4a31cb0cf89e2b1c29e2301d77b6c195e Mon Sep 17 00:00:00 2001
From: Li Yin
Date: Sun, 19 May 2024 17:40:54 -0700
Subject: [PATCH] ensure right ignore for the docs
---
.gitignore | 5 +-
components/agent/react_agent.py | 4 +-
components/retriever/faiss_retriever.py | 2 +-
core/api_client.py | 48 +--------------
core/component.py | 6 +-
core/data_components.py | 2 +-
core/default_prompt_template.py | 8 +--
core/generator.py | 2 +-
core/prompt_builder.py | 72 ++++++++++++++++------
docs/source/conf.py | 27 +++++---
docs/source/developer_notes/component.rst | 4 +-
docs/source/developer_notes/prompt.rst | 34 +++++++++-
docs/source/index.rst | 19 +++++-
images/LightRAG_dataflow.png | Bin 0 -> 127326 bytes
pyproject.toml | 4 +-
15 files changed, 139 insertions(+), 98 deletions(-)
create mode 100644 images/LightRAG_dataflow.png
diff --git a/.gitignore b/.gitignore
index ce262597..61aadae6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,14 +21,11 @@ docs/source/
llama3/
docs/build/
docs/_build/
-docs/source/_static
docs/source/_templates
-docs/source/apis/tests*.rst
tests/log_test/*.log
-docs/source/documents/tests*.rst
docs/source/documents/
+docts/source/apis/*
lib/
-docs/source/apis/tests*.rst
li_test/
.mypy_cache/
.pytest_cache/
diff --git a/components/agent/react_agent.py b/components/agent/react_agent.py
index 0da814d2..2dbdfbec 100644
--- a/components/agent/react_agent.py
+++ b/components/agent/react_agent.py
@@ -301,9 +301,9 @@ def call(
self.reset()
return answer
- def extra_repr(self) -> str:
+ def _extra_repr(self) -> str:
s = f"tools={self.tools}, max_steps={self.max_steps}, "
- s += super().extra_repr()
+ s += super()._extra_repr()
return s
diff --git a/components/retriever/faiss_retriever.py b/components/retriever/faiss_retriever.py
index b6f20710..dadb8f6b 100644
--- a/components/retriever/faiss_retriever.py
+++ b/components/retriever/faiss_retriever.py
@@ -144,6 +144,6 @@ def __call__(
response = self.retrieve(query_or_queries=query_or_queries, top_k=top_k)
return response
- def extra_repr(self) -> str:
+ def _extra_repr(self) -> str:
s = f"top_k={self.top_k}, dimensions={self.dimensions}, "
return s
diff --git a/core/api_client.py b/core/api_client.py
index 3e0229f5..fbdd0876 100644
--- a/core/api_client.py
+++ b/core/api_client.py
@@ -20,15 +20,7 @@ class APIClient(Component):
def __init__(self, *args, **kwargs) -> None:
super().__init__()
- # take the *args and **kwargs to be compatible with the Component class
- # comvert args to attributes
- for i, arg in enumerate(args):
- super().__setattr__(f"arg_{i}", arg)
- # convert kwargs to attributes
- for key, value in kwargs.items():
- super().__setattr__(key, value)
-
- # TODO: recheck to see if we need to initialize the client here
+
self.sync_client = self._init_sync_client()
self.async_client = None
@@ -72,7 +64,7 @@ def convert_input_to_api_kwargs(
raise NotImplementedError(
f"{type(self).__name__} must implement _combine_input_and_model_kwargs method"
)
-
+
def parse_chat_completion(self, completion: Any) -> str:
r"""
Parse the chat completion to a structure your sytem standarizes. (here is str)
@@ -81,7 +73,6 @@ def parse_chat_completion(self, completion: Any) -> str:
f"{type(self).__name__} must implement parse_chat_completion method"
)
-
@staticmethod
def _process_text(text: str) -> str:
"""
@@ -90,15 +81,6 @@ def _process_text(text: str) -> str:
text = text.replace("\n", " ")
return text
- # def format_input(self, *, input: Any) -> Any:
- # """
- # This is specific to APIClient.
- # # convert your component input to the API-specific format
- # """
- # raise NotImplementedError(
- # f"{type(self).__name__} must implement format_input method"
- # )
-
def _track_usage(self, **kwargs):
pass
@@ -112,29 +94,3 @@ def _track_usage(self, **kwargs):
def __call__(self, *args, **kwargs):
return super().__call__(*args, **kwargs)
-
- # def call(
- # self,
- # input: Any,
- # model_kwargs: dict = {},
- # model_type: ModelType = ModelType.UNDEFINED,
- # ) -> Any:
- # # adapt the format and the key for input and model_kwargs
- # combined_model_kwargs = self._combine_input_and_model_kwargs(
- # input, model_kwargs, model_type=model_type
- # )
- # return self._call(api_kwargs=combined_model_kwargs, model_type=model_type)
-
- # async def acall(
- # self,
- # *,
- # input: Any,
- # model_kwargs: dict = {},
- # model_type: ModelType = ModelType.UNDEFINED,
- # ) -> Any:
- # combined_model_kwargs = self._combine_input_and_model_kwargs(
- # input, model_kwargs, model_type=model_type
- # )
- # return await self._acall(
- # api_kwargs=combined_model_kwargs, model_type=model_type
- # )
diff --git a/core/component.py b/core/component.py
index d840203b..c2b278ad 100644
--- a/core/component.py
+++ b/core/component.py
@@ -52,7 +52,7 @@ def _call_unimplemented(self, *input: Any) -> None:
class Component:
r"""
- Component defines all functional base classes such as Embedder, Retriever, Generator.
+ Component is the base class for all LightRAG components, such as Prompt, APIClient, Embedder, Retriever, Generator, etc.
We purposly avoid using the name "Module" to avoid confusion with PyTorch's nn.Module.
As we consider 'Component' to be an extension to 'Moduble' as if you use a local llm model
@@ -118,7 +118,7 @@ def __delattr__(self, name: str) -> None:
else:
super().__delattr__(name)
- def extra_repr(self) -> str:
+ def _extra_repr(self) -> str:
"""
Normally implemented by subcomponents to print additional positional or keyword arguments.
# NOTE: Dont add components as it will have its own __repr__
@@ -132,7 +132,7 @@ def _get_name(self):
def __repr__(self):
# We treat the extra repr like the sub-module, one item per line
extra_lines = []
- extra_repr = self.extra_repr()
+ extra_repr = self._extra_repr()
# empty string will be split into list ['']
if extra_repr:
extra_lines = extra_repr.split("\n")
diff --git a/core/data_components.py b/core/data_components.py
index 668bcc06..2569ffa2 100644
--- a/core/data_components.py
+++ b/core/data_components.py
@@ -129,6 +129,6 @@ def __call__(
retriever_output=input, deduplicate=self.deduplicate
)
- def extra_repr(self) -> str:
+ def _extra_repr(self) -> str:
s = f"deduplicate={self.deduplicate}"
return s
diff --git a/core/default_prompt_template.py b/core/default_prompt_template.py
index c16f18d3..c616437c 100644
--- a/core/default_prompt_template.py
+++ b/core/default_prompt_template.py
@@ -1,7 +1,3 @@
-"""
-See the Promp in developer notes for why we design the system prompt this way.
-"""
-
DEFAULT_LIGHTRAG_SYSTEM_PROMPT = r"""{# task desc #}
{% if task_desc_str %}
{{task_desc_str}}
@@ -37,3 +33,7 @@
{% endif %}
"""
+"""This is the default system prompt template used in the LightRAG.
+
+Use :ref:`Prompt` class to manage it.
+"""
diff --git a/core/generator.py b/core/generator.py
index 3dcb272e..b4b21140 100644
--- a/core/generator.py
+++ b/core/generator.py
@@ -84,7 +84,7 @@ def update_default_model_kwargs(self, **model_kwargs) -> Dict:
def print_prompt(self, **kwargs) -> str:
self.system_prompt.print_prompt(**kwargs)
- def extra_repr(self) -> str:
+ def _extra_repr(self) -> str:
s = f"model_kwargs={self.model_kwargs}, model_type={self.model_type}"
return s
diff --git a/core/prompt_builder.py b/core/prompt_builder.py
index 386a70bb..99317e56 100644
--- a/core/prompt_builder.py
+++ b/core/prompt_builder.py
@@ -8,11 +8,14 @@
from core.component import Component
from core.default_prompt_template import DEFAULT_LIGHTRAG_SYSTEM_PROMPT
+import logging
+
+logger = logging.getLogger(__name__)
-# cache the environment for faster template rendering
@lru_cache(None)
def get_jinja2_environment():
+ r"""Helper function for Prompt component to get the Jinja2 environment with the default settings."""
try:
default_environment = Environment(
undefined=jinja2.StrictUndefined,
@@ -27,11 +30,35 @@ def get_jinja2_environment():
class Prompt(Component):
- """
- A component that renders a text string from a template using Jinja2 templates.
- As inherited from component, it is highly flexible, it can have
- other subcomponents which might do things like query expansion, document retrieval if you prefer
- to have it here.
+ __doc__ = r"""A component that renders a text string from a template using Jinja2 templates.
+
+ In default, we use the :ref:`DEFAULT_LIGHTRAG_SYSTEM_PROMPT` as the template.
+
+ Args:
+ template (str, optional): The Jinja2 template string. Defaults to DEFAULT_LIGHTRAG_SYSTEM_PROMPT.
+ preset_prompt_kwargs (Optional[Dict], optional): The preset prompt kwargs to fill in the variables in the prompt. Defaults to {}.
+
+ Examples:
+ >>> from core.prompt_builder import Prompt
+ >>> prompt = Prompt(preset_prompt_kwargs={"task_desc_str": "You are a helpful assistant."})
+ >>> print(prompt)
+ >>> prompt.print_prompt_template()
+ >>> prompt.print_prompt(context_str="This is a context string.")
+ >>> prompt.call(context_str="This is a context string.")
+
+ When examples_str itself is another template with variables, You can use another Prompt to render it.
+
+ >>> EXAMPLES_TEMPLATE = r'''
+ >>> {% if examples %}
+ >>> {% for example in examples %}
+ >>> {{loop.index}}. {{example}}
+ >>> {% endfor %}
+ >>> {% endif %}
+ >>> '''
+ >>> examples_prompt = Prompt(template=EXAMPLES_TEMPLATE)
+ >>> examples_str = examples_prompt.call(examples=["Example 1", "Example 2"])
+ >>> # pass it to the main prompt
+ >>> prompt.print_prompt(examples_str=examples_str)
"""
def __init__(
@@ -40,6 +67,7 @@ def __init__(
template: str = DEFAULT_LIGHTRAG_SYSTEM_PROMPT,
preset_prompt_kwargs: Optional[Dict] = {},
):
+
super().__init__()
self._template_string = template
self.template: Template = None
@@ -55,9 +83,15 @@ def __init__(
self.preset_prompt_kwargs = preset_prompt_kwargs
def update_preset_prompt_kwargs(self, **kwargs):
+ r"""Update the preset prompt kwargs after Prompt is initialized."""
self.preset_prompt_kwargs.update(kwargs)
+ def get_prompt_kwargs(self) -> Dict:
+ r"""Get the prompt kwargs."""
+ return self.prompt_kwargs
+
def is_key_in_template(self, key: str) -> bool:
+ r"""Check if the key exists in the template."""
return key in self.prompt_kwargs
def _find_template_variables(self, template_str: str):
@@ -66,19 +100,26 @@ def _find_template_variables(self, template_str: str):
return jinja2.meta.find_undeclared_variables(parsed_content)
def compose_prompt_kwargs(self, **kwargs) -> Dict:
+ r"""Compose the final prompt kwargs by combining the preset_prompt_kwargs and the provided kwargs."""
composed_kwargs = self.prompt_kwargs.copy()
if self.preset_prompt_kwargs:
composed_kwargs.update(self.preset_prompt_kwargs)
- # runtime kwargs will overwrite the preset kwargs
if kwargs:
+ for key, _ in kwargs.items():
+ if key not in composed_kwargs:
+ logger.warning(f"Key {key} does not exist in the prompt_kwargs.")
composed_kwargs.update(kwargs)
return composed_kwargs
+ def print_prompt_template(self):
+ r"""Print the template string."""
+ print("Template:")
+ print(f"-------")
+ print(f"{self._template_string}")
+ print(f"-------")
+
def print_prompt(self, **kwargs):
- r"""To better visualize the prompt: as close as the final prompt string.
- For task-specific variables, such as task_desc_str, tools_str, we replace the them with the actual values from the preset_prompt_kwargs.
- For per-query variables such as query_str, chat_history_str, we leave it as it is in the template using the custom filter none_filter.
- """
+ r"""Print the rendered prompt string using the preset_prompt_kwargs and the provided kwargs."""
try:
pass_kwargs = self.compose_prompt_kwargs(**kwargs)
@@ -88,16 +129,9 @@ def print_prompt(self, **kwargs):
except Exception as e:
raise ValueError(f"Error rendering Jinja2 template: {e}")
- def print_prompt_template(self):
- print("Template:")
- print(f"-------")
- print(f"{self._template_string}")
- print(f"-------")
-
def call(self, **kwargs) -> str:
"""
Renders the prompt template with the provided variables.
- TODO: if there are submodules,
"""
try:
pass_kwargs = self.compose_prompt_kwargs(**kwargs)
@@ -108,7 +142,7 @@ def call(self, **kwargs) -> str:
except Exception as e:
raise ValueError(f"Error rendering Jinja2 template: {e}")
- def extra_repr(self) -> str:
+ def _extra_repr(self) -> str:
s = f"template: {self._template_string}"
if self.preset_prompt_kwargs:
s += f", preset_prompt_kwargs: {self.preset_prompt_kwargs}"
diff --git a/docs/source/conf.py b/docs/source/conf.py
index acbcd177..7cbd89aa 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -56,7 +56,7 @@
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = []
+exclude_patterns = ["tests", "test_*"]
# exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '**.module.rst', '**/tests/*', '**/test_*.py', '*test.rst']
@@ -91,16 +91,27 @@ def setup(app):
# relevant when documenting Python modules and their contents, such as classes, functions, and methods.
add_module_names = False
-
+autodoc_docstring_signature = True
+
+# autodoc_default_options = {
+# "autosummary-no-titles": True,
+# "autosummary-force-inline": True,
+# "autosummary-nosignatures": True,
+# "members": True,
+# "private-members": False, # (those starting with _).
+# "special-members": False, # (those starting and ending with __).
+# "member-order": "bysource",
+# "show-inheritance": True,
+# # "undoc-members": True,
+# "autosectionlabel_prefix_document": True,
+# }
autodoc_default_options = {
- "autosummary-no-titles": True,
- "autosummary-force-inline": True,
- "autosummary-nosignatures": True,
"members": True,
- "private-members": False, # (those starting with _).
- "special-members": False, # (those starting and ending with __).
+ "undoc-members": True,
"member-order": "bysource",
"show-inheritance": True,
- "undoc-members": True,
+ "private-members": False, # Ensure this is True if you want to document private members
+ "special-members": False, # (those starting and ending with __).
+ # "special-members": "__init__", # Document special members like __init__
"autosectionlabel_prefix_document": True,
}
diff --git a/docs/source/developer_notes/component.rst b/docs/source/developer_notes/component.rst
index 6c425345..61870ab7 100644
--- a/docs/source/developer_notes/component.rst
+++ b/docs/source/developer_notes/component.rst
@@ -1,6 +1,6 @@
-abstract class Component
+Component
============
-Component is the base classes for all components. It is similar to PyTorch's `nn.Module` class.
+:ref:`Component` is the base class for all LightRAG components. It is similar to PyTorch's `nn.Module` class.
We name it differently to avoid confusion and also for better compatibility with `PyTorch`.
You write the code similar to how you write a PyTorch model.
diff --git a/docs/source/developer_notes/prompt.rst b/docs/source/developer_notes/prompt.rst
index 754be46f..e420ebaa 100644
--- a/docs/source/developer_notes/prompt.rst
+++ b/docs/source/developer_notes/prompt.rst
@@ -1,4 +1,4 @@
-Prompt [link to api class]
+Prompt
============
LightRAG library in default maximizes developers' control towards the final experience and performance, simplify the development process, and minimize the token consumption.
@@ -6,6 +6,9 @@ For the major chat models, we eventually will only send two messages to the mode
often you have a message `{'role': 'user', 'content': 'Hello, how are you?'}`. The system message is more complex, it contains the task description, tools, examples, chat history, context, and
intermediate step history from agents.
+Prompt template
+---------------------
+
Our `DEFAULT_LIGHTRAG_SYSTEM_PROMPT` templates the system prompt with 6 important sections. We leverage `jinjia2` template with 6 variables: `task_desc_str`, `tools_str`, `examples_str`, `chat_history_str`, `context_str`, and `steps_str`.
.. code-block:: python
@@ -64,9 +67,36 @@ But it should not stop you from implementing them yourself.**
Prompt class
---------------------
-We designed a `Prompt` class to render the `template` with the variables to string as the final system prompt. In the simplest case, the string is empty and we will only send
+We designed a :ref:`Prompt` class to render the `template` with the variables to string as the final system prompt. In the simplest case, the string is empty and we will only send
a user message to the model. And in most cases, you want to add at least the `task_desc_str` to the system message.
+The cool thing about our `Prompt` system is how flexible it can be. If you need to put another `template` for say `task_desc_str`, you can do that using the `Prompt` class.
+For example, your task is to instruct the llm to choose `top_k` from the given choices, you can define a new template like this:
+
+.. code-block:: python
+ :linenos:
+
+ from core.prompt_builder import Prompt
+
+ task_desc_template = r"""
+ Choose the top {{top_k}} from the following choices: {{choices}}
+ """
+ top_k = 3
+ choices = ['apple', 'banana', 'orange', 'grape']
+ task_desc_prompt = Prompt(template=task_desc_template, preset_prompt_kwargs={'top_k': top_k, 'choices': choices})
+ task_desc_str = task_desc_prompt.call()
+ prompt = Prompt(preset_prompt_kwargs={'task_desc_str': task_desc_str})
+ prompt.print_prompt()
+
+The output would be:
+
+.. code-block:: xml
+ :linenos:
+
+ Choose the top 3 from the following choices: ['apple', 'banana', 'orange', 'grape']
+
+
+
Prompt and Special Tokens context
---------------------
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 634e658e..0ff6c09e 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -6,15 +6,28 @@
LightRAG documentation
=======================
-.. image:: ../../images/lightrag_structure.png
- :width: 60%
+.. .. image:: ../../images/lightrag_structure.png
+.. :width: 60%
-LightRAG: 1000 lines of code are all you need. No lock-in to vendors and frameworks, only the best practices of productionable RAG and Agent.
+LightRAG is the "PyTorch" library for building large langage model(LLM) applications. It is light, modular and robust like "PyTorch", with essential components for `Retriever`-`Agent`-`Generator` (RAG).
+
+.. LightRAG: 1000 lines of code are all you need. No lock-in to vendors and frameworks, only the best practices of productionable RAG and Agent.
What is LightRAG?
=================
LightRAG comes from the best of the AI research and engineering. Fundamentally, we ask ourselves: what kind of system that combines the best of research(such as LLM), engineering (such as 'jinja') to build the best applications? We are not a framework. We do not want you to directly install the package. We want you to carefully decide to take modules and structures from here to build your own library and applications. This is a cookbook organized uniquely for easy understanding: you can read the 1000 lines of code to see a typical RAG end-to-end without jumping between files and going through multi-level class inheritance. If we build our system expanding from light_rag.py, we as a community will share the same RAG languages, and share other building blocks and use cases easily without depending on a complex framework.
+.. toctree::
+ :glob:
+ :maxdepth: 1
+ :caption: Community
+
+ community/lightrag_design_philosophy
+ community/contribution_guide
+ community/community
+
+
+
.. toctree::
:glob:
:maxdepth: 1
diff --git a/images/LightRAG_dataflow.png b/images/LightRAG_dataflow.png
new file mode 100644
index 0000000000000000000000000000000000000000..b385553c9d3d4a0406a55f0817ba58c7c547cab4
GIT binary patch
literal 127326
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