[PR #1546] [MERGED] feat(gemini): tool calling #1946

Closed
opened 2026-02-16 11:15:40 -05:00 by yindo · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/langgenius/dify-official-plugins/pull/1546
Author: @QIN2DIM
Created: 8/21/2025
Status: Merged
Merged: 8/21/2025
Merged by: @crazywoola

Base: mainHead: gemini-tool-calling


📝 Commits (4)

  • 3389345 feat(gemini): add support for url_context, code_execution, and enhanced feature compatibility validation
  • 11e58ca feat(gemini): add code execution feature and improve streaming response handling
  • e75d1ca feat(gemini): enable tool calling functionality
  • 32749d8 Update manifest.yaml

📊 Changes

8 files changed (+632 additions, -73 deletions)

View changed files

models/gemini/.claude/settings.local.json (+26 -0)
📝 models/gemini/manifest.yaml (+1 -1)
📝 models/gemini/models/llm/gemini-2.0-flash.yaml (+36 -8)
📝 models/gemini/models/llm/gemini-2.5-flash-lite.yaml (+27 -3)
📝 models/gemini/models/llm/gemini-2.5-flash.yaml (+27 -3)
📝 models/gemini/models/llm/gemini-2.5-pro.yaml (+26 -2)
📝 models/gemini/models/llm/llm.py (+140 -56)
models/gemini/models/llm/test_feature_compatibility.py (+349 -0)

📄 Description

Related Issues or Context

Key Changes

This update introduces significant new capabilities for the Gemini model, focusing on tool use, code execution, and robust feature validation.

  • Enabled Core Gemini Features:

    • Tool Calling: The model can now interact with external tools and APIs, enabled by setting tool.enabled to true in the manifest.
    • Code Execution: Added a code_execution feature, allowing the LLM to execute code for complex tasks. This includes refactored streaming logic to parse executable_code and code_execution_result from the response.
    • URL Context: Introduced support for the url_context parameter, allowing URLs to be provided as context to the model.
  • Implemented Strict Feature Compatibility Validation:

    • To ensure stability, a new validation layer prevents conflicting features from being used together.
    • Key rules include: json_schema is mutually exclusive with other features, url_context and code_execution cannot be used simultaneously, and built-in tool-use features are disabled when custom tools are provided.
    • A new test suite (test_feature_compatibility.py) has been added to cover these validation rules.
  • Version Bump:

    • The package version has been bumped from 0.4.2 to 0.5.0 to reflect the addition of these major new features.
model_tool_calling Code execution URL context
PixPin_2025-08-21_21-35-57
disable_code_execution
enable_code_execution
url_context_002
url_context_001
PixPin_2025-08-21_21-52-33

This PR contains Changes to Non-Plugin

  • Documentation
  • Other

This PR contains Changes to Non-LLM Models Plugin

  • I have Run Comprehensive Tests Relevant to My Changes

This PR contains Changes to LLM Models Plugin

  • My Changes Affect Message Flow Handling (System Messages and User→Assistant Turn-Taking)
  • My Changes Affect Tool Interaction Flow (Multi-Round Usage and Output Handling, for both Agent App and Agent Node)
  • My Changes Affect Multimodal Input Handling (Images, PDFs, Audio, Video, etc.)
  • My Changes Affect Multimodal Output Generation (Images, Audio, Video, etc.)
  • My Changes Affect Structured Output Format (JSON, XML, etc.)
  • My Changes Affect Token Consumption Metrics
  • My Changes Affect Other LLM Functionalities (Reasoning Process, Grounding, Prompt Caching, etc.)
  • Other Changes (Add New Models, Fix Model Parameters etc.)

Version Control (Any Changes to the Plugin Will Require Bumping the Version)

  • I have Bumped Up the Version in Manifest.yaml (Top-Level Version Field, Not in Meta Section)

Dify Plugin SDK Version

  • I have Ensured dify_plugin>=0.3.0,<0.5.0 is in requirements.txt (SDK docs)

Environment Verification (If Any Code Changes)

Local Deployment Environment

  • Dify Version is: , I have Tested My Changes on Local Deployment Dify with a Clean Environment That Matches the Production Configuration.

SaaS Environment

  • I have Tested My Changes on cloud.dify.ai with a Clean Environment That Matches the Production Configuration

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/langgenius/dify-official-plugins/pull/1546 **Author:** [@QIN2DIM](https://github.com/QIN2DIM) **Created:** 8/21/2025 **Status:** ✅ Merged **Merged:** 8/21/2025 **Merged by:** [@crazywoola](https://github.com/crazywoola) **Base:** `main` ← **Head:** `gemini-tool-calling` --- ### 📝 Commits (4) - [`3389345`](https://github.com/langgenius/dify-official-plugins/commit/3389345385fc732dce50961c3a525bfe8c0145ba) feat(gemini): add support for url_context, code_execution, and enhanced feature compatibility validation - [`11e58ca`](https://github.com/langgenius/dify-official-plugins/commit/11e58ca09024740320f12c347961d737a206ef4d) feat(gemini): add code execution feature and improve streaming response handling - [`e75d1ca`](https://github.com/langgenius/dify-official-plugins/commit/e75d1ca4e1a5b0938615faf981636db7475225bf) feat(gemini): enable tool calling functionality - [`32749d8`](https://github.com/langgenius/dify-official-plugins/commit/32749d879ea0aa3cffc860eb85663f841bb1017d) Update manifest.yaml ### 📊 Changes **8 files changed** (+632 additions, -73 deletions) <details> <summary>View changed files</summary> ➕ `models/gemini/.claude/settings.local.json` (+26 -0) 📝 `models/gemini/manifest.yaml` (+1 -1) 📝 `models/gemini/models/llm/gemini-2.0-flash.yaml` (+36 -8) 📝 `models/gemini/models/llm/gemini-2.5-flash-lite.yaml` (+27 -3) 📝 `models/gemini/models/llm/gemini-2.5-flash.yaml` (+27 -3) 📝 `models/gemini/models/llm/gemini-2.5-pro.yaml` (+26 -2) 📝 `models/gemini/models/llm/llm.py` (+140 -56) ➕ `models/gemini/models/llm/test_feature_compatibility.py` (+349 -0) </details> ### 📄 Description ## Related Issues or Context <!-- ⚠️ NOTE: This repository is for Dify Official Plugins only. For community contributions, please submit to https://github.com/langgenius/dify-plugins instead. - Link Related Issues if Applicable: #issue_number - Or Provide Context about Why this Change is Needed --> ### Key Changes This update introduces significant new capabilities for the Gemini model, focusing on tool use, code execution, and robust feature validation. * **Enabled Core Gemini Features:** * **Tool Calling:** The model can now interact with external tools and APIs, enabled by setting `tool.enabled` to `true` in the manifest. * **Code Execution:** Added a `code_execution` feature, allowing the LLM to execute code for complex tasks. This includes refactored streaming logic to parse `executable_code` and `code_execution_result` from the response. * **URL Context:** Introduced support for the `url_context` parameter, allowing URLs to be provided as context to the model. * **Implemented Strict Feature Compatibility Validation:** * To ensure stability, a new validation layer prevents conflicting features from being used together. * Key rules include: `json_schema` is mutually exclusive with other features, `url_context` and `code_execution` cannot be used simultaneously, and built-in tool-use features are disabled when custom tools are provided. * A new test suite (`test_feature_compatibility.py`) has been added to cover these validation rules. * **Version Bump:** * The package version has been bumped from `0.4.2` to `0.5.0` to reflect the addition of these major new features. | model_tool_calling | Code execution | URL context | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | <img alt="PixPin_2025-08-21_21-35-57" src="https://r2-datalake.echosec.top/blog-obs/2025/08/3133f717027e796fadfd2b1938337776.png" style="zoom: 25%;" /> | | | | | <img alt="disable_code_execution" src="https://r2-datalake.echosec.top/blog-obs/2025/08/84d4ffab75d07ee5ac33582242031a55.png" style="zoom: 25%;" /> | | | | <img alt="enable_code_execution" src="https://r2-datalake.echosec.top/blog-obs/2025/08/cd9c97561a1a140101000f2acd4ec2cc.png" style="zoom: 25%;" /> | | | | | <img alt="url_context_002" src="https://r2-datalake.echosec.top/blog-obs/2025/08/e55dc05fef77a08b2c25b61ff1071ca2.png" style="zoom: 25%;" /> | | | | <img alt="url_context_001" src="https://r2-datalake.echosec.top/blog-obs/2025/08/6473393532e268bcb91b5c47c1e7f7ae.png" style="zoom: 25%;" /> | | | | <img alt="PixPin_2025-08-21_21-52-33" src="https://r2-datalake.echosec.top/blog-obs/2025/08/7adf3042ff1dc1ed9c72e39dd864601f.png" style="zoom: 25%;" /> | ## This PR contains Changes to *Non-Plugin* <!-- Put an `x` in all the boxes that apply by replacing [ ] with [x] For example: - [x] Documentation --> - [ ] Documentation - [ ] Other ## This PR contains Changes to *Non-LLM Models Plugin* - [x] I have Run Comprehensive Tests Relevant to My Changes <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> ## This PR contains Changes to *LLM Models Plugin* <!-- LLM Models Test Example: --> <!-- https://github.com/langgenius/dify-official-plugins/blob/main/.assets/test-examples/llm-plugin-tests/llm_test_example.md --> - [x] My Changes Affect Message Flow Handling (System Messages and User→Assistant Turn-Taking) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [x] My Changes Affect Tool Interaction Flow (Multi-Round Usage and Output Handling, for both Agent App and Agent Node) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Multimodal Input Handling (Images, PDFs, Audio, Video, etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Multimodal Output Generation (Images, Audio, Video, etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Structured Output Format (JSON, XML, etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Token Consumption Metrics <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [x] My Changes Affect Other LLM Functionalities (Reasoning Process, Grounding, Prompt Caching, etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [x] Other Changes (Add New Models, Fix Model Parameters etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> ## Version Control (Any Changes to the Plugin Will Require Bumping the Version) - [x] I have Bumped Up the Version in Manifest.yaml (Top-Level `Version` Field, Not in Meta Section) <!-- ⚠️ NOTE: Version Format: MAJOR.MINOR.PATCH - MAJOR (0.x.x): Reserved for Significant architectural changes or incompatible API modifications - MINOR (x.0.x): For New feature additions while maintaining backward compatibility - PATCH (x.x.0): For Backward-compatible bug fixes and minor improvements - Note: Each Version Component (MAJOR, MINOR, PATCH) Can Be 2 Digits, e.g., 10.11.22 --> ## Dify Plugin SDK Version - [x] I have Ensured `dify_plugin>=0.3.0,<0.5.0` is in requirements.txt ([SDK docs](https://github.com/langgenius/dify-plugin-sdks/blob/main/python/README.md)) ## Environment Verification (If Any Code Changes) <!-- ⚠️ NOTE: At Least One Environment Must Be Tested. --> ### Local Deployment Environment - [x] Dify Version is: <!-- Specify Your Version (e.g., 1.2.0) -->, I have Tested My Changes on Local Deployment Dify with a Clean Environment That Matches the Production Configuration. <!-- - Python Virtual Env Matching Manifest.yaml & requirements.txt - No Breaking Changes in Dify That May Affect the Testing Result --> ### SaaS Environment - [x] I have Tested My Changes on cloud.dify.ai with a Clean Environment That Matches the Production Configuration <!-- - Python Virtual Env Matching Manifest.yaml & requirements.txt --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
yindo added the pull-request label 2026-02-16 11:15:40 -05:00
yindo closed this issue 2026-02-16 11:15:40 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify-official-plugins#1946