Dify之插件开发之授权校验(Crawl4ai)
本文详细介绍了Crawl4ai爬虫插件的凭证校验开发过程。主要内容包括:1)在插件目录下创建crawl4ai_api.py实现access_token校验逻辑;2)编辑凭证验证类和方法,通过调用Crawl4aiAPI类实现凭证校验;3)配置插件凭证参数;4)实现业务逻辑调用时的自动凭证校验;5)通过print打印测试开发效果。文章展示了从凭证配置到业务逻辑调用的完整开发流程,并强调参考官方文档的重
背景:
接上篇继续对我们的Crawl4ai爬虫插件进行扩展性开发,上篇讲解和详细记录了Dify插件开发环境的搭建及调试,这篇讲解Dify插件校验部分。
材料:
搭建完整且已能进行调试开发的vscode 环境及crawl4ai插件模板(注意:由于该插件是基于Crawl4ai 爬虫进行开发Dify爬虫插件故命名为Crawl4ai,注意命名上的混乱)
制作:
插件凭证开发
1、在 插件目录tools下创建crawl4ai_api.py,该文件用于插件key的校验及工具业务逻辑转嫁演示。
2、实现access_token 插件凭证的校验逻辑
class Crawl4aiAPI():
def __init__(self, access_token):
self.access_token = access_token
def check_access_token(self):
if self.access_token:
return True
else:
return False
3、编辑凭证验证类(位于插件的.\crawl4ai\provider\crawl4ai.py)
4、编辑内容逻辑(通过调用上面编写的crawl4ai_api.Crawl4aiAPI类中的check_access_token方法实现凭证校验调用)
def _validate_credentials(self, credentials: dict[str, Any]) -> None:
"""
验证提供的 Crawl4ai Access Token 是否有效。
尝试使用该 token 创建一个测试页面。
如果验证失败,应抛出 ToolProviderCredentialValidationError 异常。
"""
access_token = credentials.get("crawl4ai_access_token")
if not access_token:
raise ToolProviderCredentialValidationError("Crawl4ai Access Token 不能为空。")
try:
ct = Crawl4aiAPI(access_token=access_token)
is_sucess = ct.check_access_token()
if not is_sucess:
raise ToolProviderCredentialValidationError("crawl4ai_access_token凭证不正确。")
"""
IMPLEMENT YOUR VALIDATION HERE
"""
except Exception as e:
raise ToolProviderCredentialValidationError(f"crawl4ai_access_token 凭证验证失败: {e}")
5、编辑凭证校验的参数配置(位于插件的.\crawl4ai\provider\crawl4ai.yaml)
6、编辑凭证配置
identity:
author: "pengfeima"
name: "crawl4ai"
label:
en_US: "crawl4ai"
zh_Hans: "crawl4ai"
pt_BR: "crawl4ai"
description:
en_US: "采用crawl4ai工具开发的定制化爬虫服务。"
zh_Hans: "采用crawl4ai工具开发的定制化爬虫服务。"
pt_BR: "采用crawl4ai工具开发的定制化爬虫服务。"
icon: "icon.svg"
# ... (文件可能已有的 identity, name, label, description, icon 等保持不变) ...
credentials_for_provider:
crawl4ai_access_token: # 这是凭证的内部名称,将在 Python 代码中使用
type: secret-input # 输入类型为密码框
required: true # 此凭证是必需的
label: # 在 Dify UI 中显示的标签 (支持多语言)
en_US: crawl4ai Access Token
zh_Hans: crawl4ai 访问令牌
# ... (其他语言)
placeholder: # 输入框的提示文字 (支持多语言)
en_US: Enter your crawl4ai access token
zh_Hans: 请输入您的 crawl4ai 访问令牌
# ... (其他语言)
help: # 帮助提示信息 (支持多语言)
en_US: How to get your crawl4ai access token
zh_Hans: 如何获取 crawl4ai 访问令牌
# ... (其他语言)
url: https://telegra.ph/api#createAccount # 点击帮助提示时跳转的 URL
tools:
- tools/crawl4ai.yaml
extra:
python:
source: provider/crawl4ai.py
7、这样我们已经完成了插件凭证校验的简单开发,运行main.py 后可以在 Dify 插件页看到配置界面效果。
8、配置api key
9、配置成功后
10、配置成功后编辑器
11、至此我们插件凭证开发工作就完成了。
插件凭证应用:
1、如何实现在插件每次调用时都可以进行凭证校验呢?
2、回到tools目录下的crawl4ai.py页面继续进行扩展开发
3、实现校验凭证的逻辑
4、至此凭证校验部分完成开发
插件业务逻辑实现
1、调用库执行操作,代码简单实现(在tools 下的crawl4ai.py 中实现如下逻辑)
# 3. 调用库执行操作
try:
crawl = Crawl4aiAPI(access_token)
ph_link = crawl.crawl4ai_get_page_url(p_url, p_filter_keyword)
except Exception as e:
raise Exception(f"调用 Crawl4ai API 失败: {e}")
2、在 crawl4ai.Crawl4aiAPI 页面实现crawl4ai_get_page_url(url,keyword)函数用于业务处理
class Crawl4aiAPI():
def __init__(self, access_token):
self.access_token = access_token
def check_access_token(self):
if self.access_token:
return True
else:
return False
def crawl4ai_get_page_url(self, urls, keywords):
# TODO 实现系列逻辑,具体内容下一篇讲解
return urls
3、至此,插件业务开发部分也已完成。
验证上面开发是否成功
1、在crawl4ai_get_page_url 函数中实现print打印(只是为了实现测试效果)
def crawl4ai_get_page_url(self, urls, keywords):
# TODO 实现系列逻辑,具体内容下一篇讲解
print('crawl4ai_get_page_url', urls)
return urls
2、通过main.py启动插件服务并在Dify页面调用。
2.1、查看插件凭证配置页面
2.2、查看插件引用的聊天室界面
2.3、进入该插件流程
2.4、预览执行
2.5、查看控制台,自己打印的print是否成功(效果万岁)
3、至此整个DIfy插件开发的基础部分已完成,复杂的API调用、LLM调用等都很简单的。
注意:
再次强调参考官方文档进行学习,非常快Dify 插件开发:Hello World 指南 - Dify Docs
下篇将进行该插件真正的核心业务逻辑实现部分
更多推荐
所有评论(0)