12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- from typing import Optional
- from embedchain.config import CustomAppConfig
- from embedchain.embedchain import EmbedChain
- from embedchain.embedder.base_embedder import BaseEmbedder
- from embedchain.helper_classes.json_serializable import register_deserializable
- from embedchain.llm.base_llm import BaseLlm
- from embedchain.vectordb.base_vector_db import BaseVectorDB
- @register_deserializable
- class CustomApp(EmbedChain):
- """
- The custom EmbedChain app.
- Has two functions: add and query.
- adds(data_type, url): adds the data from the given URL to the vector db.
- query(query): finds answer to the given query using vector database and LLM.
- dry_run(query): test your prompt without consuming tokens.
- """
- def __init__(
- self,
- config: CustomAppConfig = None,
- llm: BaseLlm = None,
- db: BaseVectorDB = None,
- embedder: BaseEmbedder = None,
- system_prompt: Optional[str] = None,
- ):
- """
- :param config: Optional. `CustomAppConfig` instance to load as configuration.
- :raises ValueError: Config must be provided for custom app
- :param system_prompt: Optional. System prompt string.
- """
- # Config is not required, it has a default
- if config is None:
- config = CustomAppConfig()
- if llm is None:
- raise ValueError("LLM must be provided for custom app. Please import from `embedchain.llm`.")
- if db is None:
- raise ValueError("Database must be provided for custom app. Please import from `embedchain.vectordb`.")
- if embedder is None:
- raise ValueError("Embedder must be provided for custom app. Please import from `embedchain.embedder`.")
- if not isinstance(config, CustomAppConfig):
- raise TypeError(
- "Config is not a `CustomAppConfig` instance. "
- "Please make sure the type is right and that you are passing an instance."
- )
- if not isinstance(llm, BaseLlm):
- raise TypeError(
- "LLM is not a `BaseLlm` instance. "
- "Please make sure the type is right and that you are passing an instance."
- )
- if not isinstance(db, BaseVectorDB):
- raise TypeError(
- "Database is not a `BaseVectorDB` instance. "
- "Please make sure the type is right and that you are passing an instance."
- )
- if not isinstance(embedder, BaseEmbedder):
- raise TypeError(
- "Embedder is not a `BaseEmbedder` instance. "
- "Please make sure the type is right and that you are passing an instance."
- )
- super().__init__(config=config, llm=llm, db=db, embedder=embedder, system_prompt=system_prompt)
|