v0.6.9 Workflow as Tool
✨ Dify v0.6.9 has landed! ✨
We’ve been working on enhancing our workflow capabilities lately. Today we’ve got some news:
☄️ Publish workflow as a tool
You can now publish your AI workflow in Dify as a reusable tool. This allows for integration with new agents and other workflows, eliminating redundant efforts.
dify-0-6-9.mp4
🧩 Two new workflow nodes and one node improvement
🔄 Iteration
Make sure the input is an array. Each item in the array will be processed sequentially by the iteration node until all items are addressed. For instance, if you require a lengthy article, simply input several headlines. This will result in an article containing a paragraph for each headline, freeing you from the need for complex prompt orchestration.
💥 Parameter Extractor
Uses LLM to extract structured parameters from natural language, making tool use and HTTP requests in workflows a breeze.
🔗 Variable Aggregator
Improved Variable Assigner supports more flexible variable selection. Additionally, the user experience is enhanced by improving the way node connections are made.
🖼️ Brand new tool management page
We’ve updated our UI to be more intuitive and easier to use, with improved classification.
🚀 Other New Features
- GPT-4o for Azure: Added support for GPT-4o on Azure by @leslie2046 in #4568.
- Vertex AI Support: Added support for Vertex AI by @patryk20120 in #4586 and @miendinh in #4641.
- Gemini Flash: Added Gemini Flash by @QuietRocket in #4616.
- Doubao LLM and Embedding Models: Added support for Doubao LLM and embedding models by @sinomoe in #4431.
- Amazon Titan V2: Added support for Amazon Titan V2 and updated pricing for Titan V1 by @longzhihun in #4643.
- Ernie-Character-8k of Wenxin: New LLM Ernie-Character-8k added by @jiaqianjing in #4448.
- Claude Stream Tool Call: Enhanced Claude stream tool call by @Yeuoly in #4469.
- Chat Custom Disclaimer: You can add custom disclaimers in WebApp by @patryk20120 in #4306.
- MiniMax Mode Sensitive Info Masking: Added parameter config for masking sensitive info in MiniMax mode by @zhangever in #4294.
- Jina Search & Reader CSS Selectors: Added CSS selectors for Jina Search & Reader by @rennokki in #4523.
- Images and Tables Extraction from DOCX: Now supports extracting images and tables from DOCX files by @JohnJyong in #4619.
⚙️ Enhancements
- RAG Document Segmentation: Configurable max segmentation tokens length for RAG documents using an environment variable by @rainchen in #4375.
- WORKFLOW_MAX_EXECUTION_TIME: Added environment variable for max workflow execution time by @majian159 in #4632.
- Image Preview URL expire Env Variable: Added environment variable for time signature of image preview url by @patryk20120 in #4650.
🛠️ Bug Fixes
- General Fixes: Various bug fixes and improvements to enhance stability and performance.
For additional enhancements and updates, refer to the What's Changed section below.
Update Guide
Docker compose deployments:
-
Get the latest code from the main branch:
git checkout main git pull origin main
-
Go to the next step and update to the latest image:
cd docker docker compose up -d
Source Code deployments:
-
Stop API server, Worker and Web frontend Server.
-
Get the latest code from the main branch:
git checkout main git pull origin main
-
Update Python dependencies:
cd api pip install -r requirements.txt
-
Then, let's run the migration script:
flask db upgrade
-
Finally, run API server, Worker and Web frontend Server again.
What's Changed
- Create README_KR.md by @leejoo0 in #4364
- fix: delete end node by @zxhlyh in #4372
- fix: requests timeout by @Yeuoly in #4370
- improve the code readability of http_executor node by @hjlarry in #4360
- fix: Jinja switch not aligned in vertical direction by @iamjoel in #4374
- feat: Use Romanian & other langs in QA by @rennokki in #4205
- fix the issue of MILVUS_DATABASE has no effect. by @kerlion in #4353
- fix: add timeout to SMTPClient to prevent worker blocking by @chazzhou in #4352
- docs: Add CONTRIBUTING_JA.md by @shutootaki in #4383
- Fix: setup google-storage client by @kotamat in #4296
- FIX: fix the temperature value of ollama model by @Yash-1511 in #4027
- Fix HTTP REQUEST NODE is always waiting but endpoint have responsed by @hjlarry in #4395
- chore: remove model as tool by @Yeuoly in #4409
- fix: workflow delete edge when node is selected by @zxhlyh in #4414
- Optimize webscraper by @charli117 in #4392
- chore: remove useless code in knowledge_retrieval_node by @VoidIsVoid in #4412
- Custom sqlalchemy database uri scheme is supported by @xtuhcy in #4367
- Remove useless code by @GarfieldDai in #4416
- feat: support doubao llm and embeding models by @sinomoe in #4431
- fix: wrong category name in examples of question classifier completion prompt by @hanfangyuan4396 in #4421
- fix: self node type shouldn't show in the picker by @HiChen404 in #4445
- feat: add pre ping for sqlalchemy configuration by @takatost in #4454
- fix the wrong env variable AZURE_BLOB_CONTAINER_NAME by @JohnJyong in #4455
- add llm: ernie-character-8k of wenxin by @jiaqianjing in #4448
- fix: workflow add next node from knowledge retrieval node by @zxhlyh in #4467
- improve: exract Code Node provider for each supported scripting language by @bowenliang123 in #4164
- enhance: claude stream tool call by @Yeuoly in #4469
- fix: cot gent duplicate messages by @Yeuoly in #4470
- fix: cot agent token usage is empty by @sinomoe in #4474
- fix: app logo by @zxhlyh in #4483
- fix: copy button is always displayed on the chat logs page by @vikeychen in #4488
- chore: update docker-compose.yaml by @eltociear in #4492
- Fix: HTTP request node PARAMS parameters, if ':' appears in the value… by @Wang-HL in #4403
- Update docker-compose.yaml- New DEBUG variable by @Theysua in #4476
- Feat/chat custom disclaimer by @patryk20120 in #4306
- chore: skip unnecessary key checks prior to accessing a dictionary by @bowenliang123 in #4497
- fix:modify spelling errors: lanuage ->language in schema.md by @fanghongtai in #4499
- fix: files data missed for message by @MatriQ in #4512
- chore: sort categories in recommended app service response by @BenjaminX in #4498
- fix: read llm node's first prompt role by optional chaining by @sinomoe in #4510
- feat:Provide parameter config for mask_sensitive_info of MiniMax mode… by @zhangever in #4294
- fix: workaround db migration error when adding custom_disclaimer column to recommended_apps by @bowenliang123 in #4518
- Add UNSTRUCTURED_API_KEY env support by @majian159 in #4369
- allow to config max segmentation tokens length for RAG document using environment variable by @rainchen in #4375
- improve: generalize transformations and scripts of runner and preloads into TemplateTransformer by @bowenliang123 in #4487
- chore: apply and fix flake8-bugbear lint rules by @bowenliang123 in #4496
- feat: Jina Search & Jina Reader CSS selectors by @rennokki in #4523
- chore: update yfinance dependency to version 0.2.40 by @BenjaminX in #4517
- Bump oss2 to 2.18.5 for AuthV4 support by @denverdino in #4425
- oauth2 supports. by @GarfieldDai in #4551
- add qdrant metadata.doc_id index by @JohnJyong in #4559
- feat:add gpt-4o for azure by @leslie2046 in #4568
- chore: Hide the copy button when there is no content to copy by @hjlarry in #4546
- Refactor part of the ProviderManager code to improve readability by @hjlarry in #4524
- chore(api): Use channel from UI as API query parameter by @naporin0624 in #4562
- Fix bedrock claude wrong pricing by @realjustinwu in #4572
- fix: some google search result raise exception by @hjlarry in #4567
- chore: remove model provider free token link by @zxhlyh in #4579
- fix: hide automatic button on automatic result page by @sinomoe in #4494
- Add Azure OpenAI API version for GPT4o support by @somethingwentwell in #4569
- chore:update gpt-3.5-turbo and gpt-4-turbo parameter for azure by @leslie2046 in #4596
- chore: add https://api.openai.com placeholder in OpenAI api base by @takatost in #4604
- fix: code node garbled in Javascript by @Yeuoly in #4615
- support images and tables extract from docx by @JohnJyong in #4619
- add qdrant metadata.doc_id index when create qdrant collection by @JohnJyong in #4570
- feat: add confirm ui by @crazywoola in #4625
- Fix/4630 bug api suggested by @crazywoola in #4633
- feat: Add Gemini Flash by @QuietRocket in #4616
- Support for Vertex AI by @patryk20120 in #4586
- improve: extract method for safe loading yaml file and avoid using PyYaml's FullLoader by @bowenliang123 in #4031
- feat: Add WORKFLOW_MAX_EXECUTION_TIME env var by @majian159 in #4632
- fix: WORKFLOW_MAX_EXECUTION_STEPS spell error in config.py by @takatost in #4642
- update lite8k/speed8k/128k max_token to newest by @lingfengchencn in #4636
- feat: update notion extractor by @badbye in #3898
- Fix tts audition by @charli117 in #4637
- fix: the date is incorrect if the db field is timestamp and the TZ is not the UTC by @liuzhenghua in #4624
- fix: incorrect handling when http header value contain multiple colons. by @10YearsDiary in #4574
- feat: Support for Vertex AI - load Default Application Configuration by @miendinh in #4641
- Fix Unnecessary Newline Characters in Extracted Tool Response Text by @kronus-ho in #4646
- Fix tts audition by @charli117 in #4656
- [seanguo] add support of amazon titan v2 and modify the price of amazon titan v1 by @longzhihun in #4643
- fix: z-index by @ZuzooVn in #4065
- fix: node.js sdk if request is a get data must not exist by @valerionarcisi in #4618
- Feat/upgrade check i18n scripts by @crazywoola in #4671
- fix: Show rerank in system for localai by @bakjos in #4652
- fix: colon in file mistral.mistral-small-2402-v1:0 by @crazywoola in #4673
- fix: show exception message when sandbox execution fails by @bowenliang123 in #4663
- fix typo: stopParameerRule -> stopParameterRule by @Leheng620 in #4681
- feat: workflow new nodes by @zxhlyh in #4683
- Feat/workflow phase2 by @Yeuoly in #4687
- 🔧 Add env variable for time signature by @patryk20120 in #4650
- version to 0.6.9 by @takatost in #4692
New Contributors
- @leejoo0 made their first contribution in #4364
- @rennokki made their first contribution in #4205
- @chazzhou made their first contribution in #4352
- @shutootaki made their first contribution in #4383
- @kotamat made their first contribution in #4296
- @xtuhcy made their first contribution in #4367
- @hanfangyuan4396 made their first contribution in #4421
- @HiChen404 made their first contribution in #4445
- @jiaqianjing made their first contribution in #4448
- @Wang-HL made their first contribution in #4403
- @Theysua made their first contribution in #4476
- @fanghongtai made their first contribution in #4499
- @rainchen made their first contribution in #4375
- @denverdino made their first contribution in #4425
- @naporin0624 made their first contribution in #4562
- @realjustinwu made their first contribution in #4572
- @somethingwentwell made their first contribution in #4569
- @QuietRocket made their first contribution in #4616
- @10YearsDiary made their first contribution in #4574
- @kronus-ho made their first contribution in #4646
- @ZuzooVn made their first contribution in #4065
- @valerionarcisi made their first contribution in #4618
- @bakjos made their first contribution in #4652
- @Leheng620 made their first contribution in #4681
Full Changelog: 0.6.8...0.6.9