✨ What’s New in v0.12.0? ✨
Important
Heads up! Starting with this version, we'll no longer support Python 3.10. Make sure to upgrade to Python 3.11 or 3.12 to stay current with our updates.
Hey everyone! We’ve been busy fine-tuning the platform and packing in some new features in version 0.12.0. Let’s see what’s new and improved:
🚀 Enhanced File Support for Workflow/Chatflow LLM Node and Chat/Agent
We’re excited to introduce the new file support capabilities for LLM Node and Basic Chat/Agent! This update significantly enhances multi-modal capabilities and smart document processing, providing more flexibility and power for your application development. Here are the key highlights:
File Variable Support in LLM Node
LLM Node now supports directly referencing File and Array File variables in Prompts, unlocking greater possibilities for developers.
For example, you can upload multiple file variables (such as PDFs and images) and have the model collaboratively handle complex tasks, like summarizing report content or extracting key data. Multi-file support makes workflow design more efficient and seamless!
Tip
- File Support Scope: The file types supported by the model may be more limited than the types allowed for upload. Be sure to read your model provider's official documentation to ensure that uploaded files can be processed correctly.
- Document Handling in Unsupported Models: If the model does not natively support processing document files, you will still need to use the Document Extractor for extracting content.
- Filtering Unsupported Files: To handle unsupported file types, consider using List Operator or IF-ELSE to screen them, ensuring smooth workflows.
- Relation to Vision Features: File support operates independently of the Vision toggle. As long as the model supports Vision capabilities, you can use files as input.
New Document-Type Support for Basic Chat and Agent
Basic Chat and Agent now include a Document toggle. If the model supports processing document-type files, you can enable this feature.
For instance, you can upload a PDF report and let the Agent automatically analyze market data or assess content value, making such workflows simpler and smarter.
Enhanced Multi-Modal Capabilities
The new version extends support for multi-modal tasks. For example, you can upload audio files and have the model perform emotional analysis. This combination of text, audio, and file processing capabilities allows you to build more diverse and rich application scenarios.
⚙️ Improvements
-
OpenAI o1 Streaming Support: We now support streaming output for OpenAI o1-preview and o1-mini, thanks to @laipz8200 in #10890.
-
Performance Optimization: The
WeightRerankRunner
logic has been optimized to achieve constant time complexity, thanks to @yihong0618 in #10849. -
UI Enhancements: We’ve made the Table of Contents panel in the API document page collapsible, giving you greater control over your workspace, thanks to @hjlarry in #10875.
-
JSON Schema for Gemini Models: Added support for JSON schema integration, ensuring smoother alignment with Gemini models, thanks to @hjlarry in #10835.
-
Redis Clusters: Our
ext_redis.py
now includes support for Redis clusters, expanding flexibility for data management, implemented by @liuhaoran1212 in #9789. -
Enhanced Custom Notes: You can now further enhance custom notes for increased expressiveness, courtesy of @hjlarry in #8885.
That’s the scoop for v0.12.0! Until next time, keep exploring and innovating! 🌟
Upgrade Guide
Docker compose deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service,Command, please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes
-
Upgrade services
docker compose up -d
Source Code deployments
-
Stop API server, Worker and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 0.12.0
-
Update Python dependencies:
cd api poetry install
-
Then, let's run the migration script:
poetry run flask db upgrade
-
Finally, run API server, Worker and Web frontend Server again.
What's Changed
- fix: script rendering in message by @zxhlyh in #10807
- feat: AnalyticDB vector store supports invocation via SQL. by @lpdink in #10802
- chore: update .gitignore to include mise.toml by @BenjaminX in #10778
- fix: correct typo in ETL type comment in .env.example by @simonmysun in #10822
- refactor: improve handling of leading punctuation removal by @zandko in #10761
- doc: add clarification for length limit of init password by @simonmysun in #10824
- feat: add TOC to app develop doc by @hjlarry in #10799
- feat: Knowledge-base-api-get-post-method-text-error-#10836 by @dajianguo in #10837
- fix: close child modal on log drawer close by @kimjion in #10839
- fix: upload file component support multiple by @zxhlyh in #10817
- Fix: crash of workflow file upload by @JzoNgKVO in #10831
- style: refactor fetch and context by @AkaraChen in #10795
- Support Video Proxy and TED Embedding by @taowang1993 in #10819
- feat: support json schema for gemini models by @hjlarry in #10835
- fix: better WeightRerankRunner run logic use O(1) and delete unused code by @yihong0618 in #10849
- fix httpx doesn't support stream parameter by @JohnJyong in #10859
- fix tongyi embedding endpoint return None output by @JohnJyong in #10857
- Feat/add langsmith dotted order by @ZhouhaoJiang in #10856
- Encode invitee email in the invitation link by @nht1206 in #10842
- fix: download some remote files raise error by @hjlarry in #10781
- Fix the situation where output_tokens/input_tokens may be None in response.usage by @AAlexDing in #10728
- feat: add a minimal separator between pinned apps and unpinned apps in the explore page by @kurokobo in #10871
- feat: make toc panel can collapse by @hjlarry in #10875
- feat: support function call for ollama block chat api by @GeorgeCaoJ in #10784
- feat: enhance the custom note by @hjlarry in #8885
- feat: admin can also change member role by @cuckootan in #10651
- Fix : Add a process to fetch the mime type from the file name for signed url in remote_url by @kitotakumi in #10872
- fix: update email validation regex to allow periods in local part by @Montaserz in #10868
- fix: tool's file input display string by @hjlarry in #10887
- fix(http_request): allow content type
application/x-javascript
by @laipz8200 in #10862 - feat: support custom tool upload file by @hjlarry in #10796
- ext_redis.py support redis clusters --- Fixes #9538 by @liuhaoran1212 in #9789
- fix: aws presign url is not workable remote url by @ybalbert001 in #10884
- Fix/input-value-type-in-moderation by @laipz8200 in #10893
- Support streaming output for OpenAI o1-preview and o1-mini by @laipz8200 in #10890
- fix: explicitly use new token when retrying ssePost after refresh by @llinvokerl in #10864
- Gitee AI embedding tool by @fchange in #10903
- fix: handle redis authentication for healthcheck command by @shisaru292 in #10907
- Fix : Add a process to fetch the mime type from the file name for signed url in remote_url #10872 version2 by @kitotakumi in #10908
- doc: fix better doc for api develop, droping dead hint by @yihong0618 in #10906
- fix: refactor all 'or []' and 'or {}' logic to make code more clear by @yihong0618 in #10883
- Add googlenews tools from rapidapi by @Tuyohai in #10877
- fix image files not deleted on indexing_estimate #9541 by @wy96f in #10798
- feat : Add Japanese translations for API documentation: chat, advanced-chat, completion, and workflow by @Kota-Yamaguchi in #10927
- fix: chat history might be empty in log detail view by @xuzuodong in #10905
- Update parse.py to handle empty list result by @PedroGomes02 in #10915
- fix: default max_chunks set to 1 as other providers by @yihong0618 in #10937
- fix(gpt-4o-audio-preview): Remove the vision feature by @laipz8200 in #10932
- fix weight rerank of knowledge retrieval by @AkisAya in #10931
- fix: external dataset missing score_threshold_enabled by @hanqingwu in #10943
- Resolve 8475 support rerank model from infinity by @LastHopeOfGPNU in #10939
- Feat: support json output for bing-search by @xu-song in #10904
- fix: fix bugs of frontend-workflow panel operator by @marvin-season in #10945
- feat: add cURL import for http request node by @hjlarry in #8656
- fix: tiny lora bug found by mypy by @yihong0618 in #10959
- fix: unstructured io credential environment variables missing by @fdb02983rhy in #10953
- feat: add gpt-4o-2024-11-20 by @agungbesti in #10951
- feat: slidespeak slides generation by @fdb02983rhy in #10955
- refactor: split manual from auto generation css variables by @WTW0313 in #10961
- chore: Added the new gemini exp-1121 and learnlm-1.5 models by @CXwudi in #10963
- feat: Check and compare the DSL version before import an app by @laipz8200 in #10969
- chore: translate i18n files by @github-actions in #10970
- Feat: update icon and Divider components by @douxc in #10975
- fix(model): make sure AppModelConfig.model_dict returns a dict. by @laipz8200 in #10972
- feat: Allow using file variables directly in the LLM node and support more file types. by @laipz8200 in #10679
- feat: add a meta(mac) ctrl(windows) key by @crazywoola in #10978
- chore(app_dsl_service): Downgrade DSL Version by @laipz8200 in #10979
- feat: support LLM process document file by @hjlarry in #10966
- chore: update base image to Python 3.12 in Dockerfile by @laipz8200 in #10358
- fix: rules should not be None for in by @yihong0618 in #10977
- chore (dep): bump gevent from v23 to v24 for better support for Python 3.11 and 3.12 by @bowenliang123 in #10387
- fix: fish audio wrong validate credentials interface by @yihong0618 in #11019
- chore(devcontainer): upgrade Python version to 3.12 in Dockerfile and configuration by @fujita-h in #11017
- fix: gitlab file url not correctly encoded by @AkisAya in #10996
- Fixing #11005: Incorrect max_tokens in yaml file for AWS Bedrock US Cross Region Inference version of 3.5 Sonnet v2 and 3.5 Haiku by @kazuhisa-wada in #11013
- feat: Add support for TEI API key authentication by @kenwoodjw in #11006
- doc: Updated Python version requirements to match English version by @fujita-h in #11015
- Fix typo by @johnpccd in #11024
- fix: uuid not import bug by @yihong0618 in #11014
- fix: wrong convert in PromptTemplateConfigManager by @yihong0618 in #11016
- chore: bump minimum supported Python version to 3.11 by @bowenliang123 in #10386
- fix: json parse err when http node send request by @litterGuy in #11001
- fix error with xinference tool calling with qwen2-instruct and add timeout retry setttings for xinference by @cyflhn in #11012
- feat(file_factory): Standardize custom file type into known types by @laipz8200 in #11028
- fix: query will be None if the query_prompt_template not exists by @laipz8200 in #11031
- fix: Japanese typo by @TakakiMoriguchi in #11034
- fix: Validate file only when file type is set to custom by @laipz8200 in #11036
- fix: wrong param name by @mazyu36 in #11039
- make tool parameters parsing compatible with the response of glm4 model in xinference provider when function tool call integerated by @cyflhn in #11049
- Fix Deepseek Function/Tool Calling by @taowang1993 in #11023
- ISSUE=11042: add tts model in siliconflow by @senseb in #11043
- Feat/add admin check by @KMerdan in #11050
- fix the wrong LINDORM_PASSWORD variable name in docker-compose.yaml by @AlwaysBluer in #11052
- chore: update chromadb version to 0.5.20 by @yihong0618 in #11038
- fix: slidespeak text output is not the download link by @fdb02983rhy in #10997
- fix: llm node do not pass sys.query in chatflow app init by @iamjoel in #11053
- feat(i18n): update Japanese translation for login page by @nomi3 in #10993
- fix(workflow_entry): Support receive File and FileList in single step run. by @laipz8200 in #10947
- Improvement: update api doc of workflow by @JzoNgKVO in #11054
- fix: better path trigger for vdb and fix the version by @yihong0618 in #11057
- feat: add cookie management by @iamjoel in #11061
- fix: ignore empty outputs in Tool node by @PedroGomes02 in #10988
- fix: WorkflowNodeExecution.created_at may be earlier than WorkflowRun.created_at by @laipz8200 in #11070
- chore: bump version to 0.12.0 by @laipz8200 in #11056
New Contributors
- @simonmysun made their first contribution in #10822
- @zandko made their first contribution in #10761
- @nht1206 made their first contribution in #10842
- @AAlexDing made their first contribution in #10728
- @kitotakumi made their first contribution in #10872
- @Montaserz made their first contribution in #10868
- @Tuyohai made their first contribution in #10877
- @wy96f made their first contribution in #10798
- @hanqingwu made their first contribution in #10943
- @LastHopeOfGPNU made their first contribution in #10939
- @xu-song made their first contribution in #10904
- @marvin-season made their first contribution in #10945
- @agungbesti made their first contribution in #10951
- @kazuhisa-wada made their first contribution in #11013
- @kenwoodjw made their first contribution in #11006
- @litterGuy made their first contribution in #11001
- @cyflhn made their first contribution in #11012
- @TakakiMoriguchi made their first contribution in #11034
- @KMerdan made their first contribution in #11050
- @nomi3 made their first contribution in #10993
Full Changelog: 0.11.2...0.12.0