慎气 发表于 2025-5-31 23:08:19

来咯,围观下如何Dify二次开发

原文地址: https://zhuzhulang.github.io/blog/posts/how-to-add-custom-providers/
之前介绍了如何搭建Dify的环境,可以说是非常的简单,没什么难度。下面开始正式进行Dify的二次开发,预计要分多篇文章来叙述了。
整体来说,二次Dify开发难度并不大,可能会有一些坑,但是对于经验丰富的我来说都不成问题。不知道谁说Dify是高级Python工程师应有的水平,我只能呵呵了。
废话不多说,这里先实现个小小的目标,自定义模型服务商吧。首先提前申明下下面的代码是基于0.15.3的。
在官方文档中有如下这么一个提示:

相关内容可以参考。可以看到,如果要使用插件功能,只能升级到1.0.0版本。而且Dify这个项目更新很快,换句话说就是很不稳定。
下面开始正式的操作。先创建1个doga的包,主要是纪念如下的人物:

这里没什么恶意,仅仅是学习而已。整个包的目录结构如下:
doga                                 
├── _assets                           
│   ├── icon_l_en.png               
│   └── icon_s_en.png               
├── doga.py                           
├── doga.yaml                        
├── __init__.py                     
└── llm                              
    ├── doga-1.0.yaml               
    ├── __init__.py                  
    └── llm.py                        其中_assets目录用于存储logo,而dogma.yaml是配置文件。
在doga.yaml中先定义如下的内容:
provider: doga
label:
en_US: Doga
zh_Hans: 卡波苏
description:
   zh_Hans: 卡波苏模型
   en_US: doga model
icon_small:
en_US: icon_s_en.png
zh_Hans: icon_s_en.png
icon_large:
en_US: icon_l_en.png
zh_Hans: icon_l_en.png
background: "#93c5fd"
supported_model_types:
- llm
configurate_methods:
- predefined-model
provider_credential_schema:
credential_form_schemas:
    - variable: doga_api_key
      label:
      en_US: API Key
      type: secret-input
      required: true
      placeholder:
      zh_Hans: 请在此输入您的API Key
      en_US: Please enter your API Key
    - variable: doga_endpoint_url
      label:
      zh_Hans: 自定义API endpoint地址
      en_US: Custom API endpoint URL
      type: text-input
      required: false
      placeholder:
      zh_Hans: Base URL, e.g. https://api.example.com/v1
      en_US: Base URL, e.g. https://api.example.com/v1相关的说明可以查看参考文章中的链接。由于该模态只支持LLM对话,因此只有llm子包,其中的llm.py中需要实现一个继承自LargeLanguageModel的自定义类,该类需要实现如下一些方法:

[*]_invoke,模型运行调用
[*]get_num_tokens,预计算输入 tokens
[*]validate_credentials,模型凭据校验
[*]_invoke_error_mapping,调用异常错误映射表
相关的代码这里就赘述了,完整的代码可以参考。
最后是更新后的效果,成功出现了自己定义的模型提供商:

配置出现如下的页面:

可以说,整个过程还是很简单的,只需要按照说明进行操作即可。
参考文章:
https://docs.dify.ai/zh-hans/guides/model-configuration/new-provider
https://docs.dify.ai/zh-hans/guides/model-configuration/predefined-model

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 来咯,围观下如何Dify二次开发