64 lines
2.8 KiB
Python
64 lines
2.8 KiB
Python
import logging
|
|
from typing import Optional
|
|
|
|
from embedchain.apps.app import App
|
|
from embedchain.config import CustomAppConfig
|
|
from embedchain.embedder.base import BaseEmbedder
|
|
from embedchain.helper.json_serializable import register_deserializable
|
|
from embedchain.llm.base import BaseLlm
|
|
from embedchain.vectordb.base import BaseVectorDB
|
|
|
|
|
|
@register_deserializable
|
|
class CustomApp(App):
|
|
"""
|
|
Embedchain's custom app allows for most flexibility.
|
|
|
|
You can craft your own mix of various LLMs, vector databases and embedding model/functions.
|
|
|
|
Methods:
|
|
add(source, data_type): adds the data from the given URL to the vector db.
|
|
query(query): finds answer to the given query using vector database and LLM.
|
|
chat(query): finds answer to the given query using vector database and LLM, with conversation history.
|
|
|
|
.. deprecated:: 0.0.64
|
|
Use `App` instead.
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
config: Optional[CustomAppConfig] = None,
|
|
llm: BaseLlm = None,
|
|
db: BaseVectorDB = None,
|
|
embedder: BaseEmbedder = None,
|
|
system_prompt: Optional[str] = None,
|
|
):
|
|
"""
|
|
Initialize a new `CustomApp` instance. You have to choose a LLM, database and embedder.
|
|
|
|
.. deprecated:: 0.0.64
|
|
Use `App` instead.
|
|
|
|
:param config: Config for the app instance. This is the most basic configuration,
|
|
that does not fall into the LLM, database or embedder category, defaults to None
|
|
:type config: Optional[CustomAppConfig], optional
|
|
:param llm: LLM Class instance. example: `from embedchain.llm.openai import OpenAILlm`, defaults to None
|
|
:type llm: BaseLlm
|
|
:param db: The database to use for storing and retrieving embeddings,
|
|
example: `from embedchain.vectordb.chroma_db import ChromaDb`, defaults to None
|
|
:type db: BaseVectorDB
|
|
:param embedder: The embedder (embedding model and function) use to calculate embeddings.
|
|
example: `from embedchain.embedder.gpt4all_embedder import GPT4AllEmbedder`, defaults to None
|
|
:type embedder: BaseEmbedder
|
|
:param system_prompt: System prompt that will be provided to the LLM as such, defaults to None
|
|
:type system_prompt: Optional[str], optional
|
|
:raises ValueError: LLM, database or embedder has not been defined.
|
|
:raises TypeError: LLM, database or embedder is not a valid class instance.
|
|
"""
|
|
logging.warning(
|
|
"DEPRECATION WARNING: Please use `App` instead of `CustomApp`. "
|
|
"`CustomApp` will be removed in a future release. "
|
|
"Please refer to https://docs.embedchain.ai/advanced/app_types#opensourceapp for instructions."
|
|
)
|
|
super().__init__(config=config, llm=llm, db=db, embedder=embedder, system_prompt=system_prompt)
|