Commit graph

6,479 commits

Author SHA1 Message Date
Gabriel Almeida
ebc1f6a0df feat(api): add callback handler for streaming LLM responses
Add a new file `callback.py` that contains a new class `StreamingLLMCallbackHandler` that inherits from `AsyncCallbackHandler`. This class handles streaming LLM responses. It has a constructor that takes a `websocket` parameter and sets it as an instance variable. It also has an `on_llm_new_token` method that takes a `token` parameter and sends a `ChatResponse` object to the `websocket` instance variable.

Update `chat_manager.py` to import the new `StreamingLLMCallbackHandler` class. Add a new function `try_setting_streaming_options` that takes a `langchain_object` and a `websocket` parameter. This function checks if the `llm` attribute of the `langchain_object` is an instance of `OpenAI`, `ChatOpenAI`, `AzureOpenAI`, or `AzureChatOpenAI`. If it is, it sets the
2023-04-23 14:31:21 -03:00
Petru Molla
801ff57dc0 Update loading.py 2023-04-20 16:06:22 -03:00
Gabriel Luiz Freitas Almeida
ded527a64a Update loading.py 2023-04-20 16:06:22 -03:00
Petru Molla
68f69e878e Using an exported Flow JSON file with load_flow_from_json("path/to/flow.json") returns
"UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 9465: character maps to
<undefined>".

Specifying the encodint type in the function helps to fix that error.
2023-04-20 16:06:22 -03:00
Ibis Prevedello
46e76c8ca4 feat: add SQLDatabaseChain
Close #173
2023-04-20 15:17:23 -03:00
Ibis Prevedello
843ae8efc5 feat: add extra tools and utilities 2023-04-20 15:17:23 -03:00
Ibis Prevedello
571f407ef3 refac: refactor tools and add QuerySQLDataBaseTool 2023-04-20 15:17:23 -03:00
Gabriel Almeida
5169c0bc27 feat(chat_manager.py): add support for sending file responses
fix(schemas.py): add validation for file response type and data type
test(test_websocket.py): remove data and data_type fields from ChatResponse messages in tests
2023-04-20 11:09:42 -03:00
Gabriel Almeida
3da30cc5bf refactor(cache): move cache functionality to a separate class
feat(cache): add support for multiple clients and context manager to set client_id
feat(cache): add observer pattern to notify on cache changes
feat(cache): add async observer pattern to notify on cache changes in async functions
feat(cache): add methods to add pandas DataFrame or Series and PIL Image to cache
feat(cache): add method to get an object from cache by key
feat(cache): add method to get the last added item in cache
2023-04-20 11:09:11 -03:00
Gabriel Almeida
0a630cd70d refactor(chat_manager.py): move process_graph function outside of ChatManager class
test(websocket.py): add tests for websocket connection, chat history, and sending messages
2023-04-19 22:23:31 -03:00
Gabriel Almeida
7d183ff57e refactor(chat.py, chat_manager.py, schemas.py, run.py): add chat history to ChatManager and ChatMessage schema
feat(chat.py, chat_manager.py): add error handling for async_get_result_and_steps
feat(chat.py): add client_id to websocket endpoint
feat(schemas.py): add data_type field to ChatResponse schema
refactor(run.py): memoize build_langchain_object_with_caching function with maxsize of 10
2023-04-19 21:28:05 -03:00
Gabriel Almeida
f1ef859374 feat(template): add advanced flag to TemplateFieldCreator and FrontendNode classes
Add an advanced flag to the TemplateFieldCreator and FrontendNode classes to allow for fields to be hidden from the user interface. In the TemplateFieldCreator class, the advanced flag is set to False by default. In the FrontendNode class, the advanced flag is set to False for all fields except for "model_type" and "model_kwargs", which are set to True.
2023-04-19 14:52:05 -03:00
Gabriel Almeida
18b3583850 test(websocket.py): add tests for websocket connection, chat history and sending message 2023-04-19 13:13:58 -03:00
Gabriel Almeida
e4d0a39b0b refactor: remove unnecessary build and push scripts and Dockerfiles
The removed files were unnecessary and were removed to simplify the project.
2023-04-19 11:49:17 -03:00
Gabriel Almeida
d978ae5438 refactor(cache): move cache-related functions to base.py module
feat(cache): add support for pandas and PIL Image objects caching
fix(interface): import cache-related functions from base.py module
test(cache): update import statements in cache-related test file
2023-04-19 11:02:32 -03:00
Gabriel Almeida
8721083c25 refactor(run.py): simplify fix_memory_inputs function and handle cases where langchain_object has no prompt attribute 2023-04-19 00:48:06 -03:00
Gabriel Almeida
cd241c22c7 refactor(loading.py): add support for instantiating tool nodes
refactor(tools/base.py): comment out unused code for ToolCreator
feat(nodes.py): add 'return_direct' field to ToolNode template and set base class to 'Tool'
2023-04-19 00:46:57 -03:00
Gabriel Almeida
a0da9c6111 refactor(validate.py): filter function objects by filename to ensure they are from the evaluated string 2023-04-18 21:27:47 -03:00
Ibis Prevedello
e1f4041908 Fix bug when running LLM alone
Fix #117
2023-04-17 16:57:49 -03:00
Ibis Prevedello
ec0c6c79c1 feat: add SQL agent 2023-04-13 22:33:46 -03:00
Ibis Prevedello
3d211fc487 fix test, linting, and vector_store folder 2023-04-13 22:12:21 -03:00
Ibis Prevedello
ba1f7daa7a refac: change docstring parser 2023-04-13 21:39:25 -03:00
Gabriel Almeida
ce542e9337 fix(langflow): return None when a node is not loaded in LangChainTypeCreator classes 2023-04-13 15:54:40 -03:00
Gabriel Almeida
6d2f948bdb refactor(base.py): remove unnecessary comment
feat(base.py): add support for int type in node value
feat(base.py): add support for chunk_size and chunk_overlap in TextSplitterCreator signature
2023-04-13 15:45:08 -03:00
Gabriel Almeida
b56d905042 fix conflicts 2023-04-13 12:00:07 -03:00
Gabriel Almeida
c28e6ad62d fix: fix import paths for several modules
feat: add logging for missing nodes in LangChainTypeCreator classes
feat: add support for custom TextLoader document loader
fix: fix typo in document loaders base module name
fix: fix typo in text_splitters package name and add __init__.py file

refactor(interface): rename textSplitters to text_splitters
refactor(interface): rename documentLoaders to document_loaders
refactor(interface): rename vectorStore to vectorstore
refactor(interface): rename toolkits to toolkit
refactor(interface): rename tools to tool
refactor(interface): rename prompts to prompt
refactor(interface): rename memories to memory
refactor(interface): rename embeddings to embedding
refactor(interface): rename wrappers to wrapper
fix(interface): fix typo in text_splitters/base.py
fix(interface): fix typo in toolkits/base.py
fix(interface): fix typo in vectorstore/base.py
fix(interface): fix typo in wrappers/base.py
feat(interface): add logging for when a type is not loaded
2023-04-13 11:57:10 -03:00
Ibis Prevedello
b9ef727248 refac: remove UnstructuredImageLoader because of issue with Python 3.11 2023-04-13 11:52:42 -03:00
Ibis Prevedello
41c2ba9639 refac: add decorator to create cache folder 2023-04-13 11:52:42 -03:00
Ibis Prevedello
c69e5a72f0 feat: add document loaders 2023-04-13 11:52:42 -03:00
Ibis Prevedello
296ecafdcf refac: change cache folder 2023-04-13 11:52:42 -03:00
Gabriel Luiz Freitas Almeida
396cb7be2b
Merge branch 'dev' into 146-improve-conversationchain-node 2023-04-10 19:20:56 -03:00
Gabriel Luiz Freitas Almeida
e1ca085a7a
Vector stores, embeddings, document loaders, and text splitters (#145) 2023-04-10 19:16:45 -03:00
Gabriel Almeida
026482bef4 feat(nodes.py): add required and show properties to input_key and output_key fields in ChainFrontendNode
feat(nodes.py): add show property to prompt field in LLMFrontendNode
fix(nodes.py): set password property to False for MemoryFrontendNode's Memory Size field
2023-04-10 15:12:54 -03:00
Gabriel Almeida
16843fd66d fix: prompt fields are never password 2023-04-10 12:23:00 -03:00
Ibis Prevedello
81c634f839 fix: fix lint and formatting 2023-04-10 12:01:13 -03:00
Ibis Prevedello
a6644176d4 feat: change icons, colors and fix minor bug 2023-04-10 11:53:34 -03:00
Ibis Prevedello
fee2e52ec1 Merge branch 'dev' into vecstores 2023-04-10 10:20:56 -03:00
Gabriel Almeida
e420f9dd00 refactor(nodes.py): remove unused ChainFrontendNode class and its format_field method. 2023-04-09 07:00:27 -03:00
Gabriel Almeida
8c044513d2 feat(nodes.py): add ChainFrontendNode class and format_field method to handle key field display 2023-04-09 07:00:27 -03:00
Gabriel Almeida
abfea7fe8f feat: added LLMFrontendNode 2023-04-09 07:00:27 -03:00
Yoaz Menda
4bff12c80f remove unnecessary llama import 2023-04-09 06:51:17 -03:00
Yoaz Menda
ff42fce86e remove unnecessary custom llama object initialization 2023-04-09 06:51:17 -03:00
Yoaz Menda
f02f0f9c98 Add support to llama as llm 2023-04-09 06:51:17 -03:00
Ibis Prevedello
cd6ef4a875 refac: fix tool bug 2023-04-08 13:49:06 -03:00
Gabriel Almeida
c5f24e7dfa fix: linting 2023-04-08 09:29:42 -03:00
Gabriel Almeida
46b2409526 fix: templates were not being processed correctly 2023-04-08 09:29:42 -03:00
Gabriel Almeida
cfd4a229ea fix: adding chainfrontendnode 2023-04-08 09:29:42 -03:00
Gabriel Almeida
db0d07f11d added comment 2023-04-08 06:54:37 -03:00
Gabriel Almeida
3fb53ca95b renamed function 2023-04-08 06:39:11 -03:00
Gabriel Almeida
6056b20b1d replaced with new memoize function 2023-04-08 06:38:08 -03:00