需要v0.6.10版本
新版本对Filter函数新增了Toggle属性,可以在输入框下增加切换按钮来控制Filter函数生效
以下是我的配置示例,具体参数设定仅对LiteLLM中转的api有效,NewAPI类可以参考修改:
联网搜索:
"""
title: 联网搜索
description: 原生联网搜索
"""
from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any
class Filter:
class Valves(BaseModel):
priority: int = Field(default=100, description="优先级")
pass
def __init__(self):
self.valves = self.Valves()
self.toggle = True
self.icon = """data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCIgc3Ryb2tlLXdpZHRoPSIxLjc1IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgY2xhc3M9InNpemUtNSI+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNMTIgMjFhOS4wMDQgOS4wMDQgMCAwIDAgOC43MTYtNi43NDdNMTIgMjFhOS4wMDQgOS4wMDQgMCAwIDEtOC43MTYtNi43NDdNMTIgMjFjMi40ODUgMCA0LjUtNC4wMyA0LjUtOVMxNC40ODUgMyAxMiAzbTAgMThjLTIuNDg1IDAtNC41LTQuMDMtNC41LTlTOS41MTUgMyAxMiAzbTAgMGE4Ljk5NyA4Ljk5NyAwIDAgMSA3Ljg0MyA0LjU4Mk0xMiAzYTguOTk3IDguOTk3IDAgMCAwLTcuODQzIDQuNTgybTE1LjY4NiAwQTExLjk1MyAxMS45NTMgMCAwIDEgMTIgMTAuNWMtMi45OTggMC01Ljc0LTEuMS03Ljg0My0yLjkxOG0xNS42ODYgMEE4Ljk1OSA4Ljk1OSAwIDAgMSAyMSAxMmMwIC43NzgtLjA5OSAxLjUzMy0uMjg0IDIuMjUzbTAgMEExNy45MTkgMTcuOTE5IDAgMCAxIDEyIDE2LjVjLTMuMTYyIDAtNi4xMzMtLjgxNS04LjcxNi0yLjI0N20wIDBBOS4wMTUgOS4wMTUgMCAwIDEgMyAxMmMwLTEuNjA1LjQyLTMuMTEzIDEuMTU3LTQuNDE4Ij48L3BhdGg+PC9zdmc+"""
pass
def inlet(self, body: dict, user: Optional[dict] = None) -> dict:
model_name = body.get("model")
if isinstance(model_name, str):
if model_name.startswith("google/"):
grounding_tool_key = "googleSearch"
grounding_tool = {grounding_tool_key: {}}
tools_list = body.setdefault("tools", [])
if not isinstance(tools_list, list):
tools_list = []
body["tools"] = tools_list
if not any(
grounding_tool_key in tool
for tool in tools_list
if isinstance(tool, dict)
):
tools_list.append(grounding_tool)
body["tools"] = tools_list
elif model_name.startswith("deepseek/"):
body["model"] = model_name + "-search"
return body
深度思考:
"""
title: 深度思考
description: 先思考后回答,解决推理问题
"""
from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any
class Filter:
class Valves(BaseModel):
priority: int = Field(default=100, description="优先级")
pass
def __init__(self):
self.valves = self.Valves()
self.toggle = True
self.icon = """data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBjbGFzcz0ic2l6ZS02Ij4KICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik0xMiAxOHYtNS4yNW0wIDBhNi4wMSA2LjAxIDAgMCAwIDEuNS0uMTg5bS0xLjUuMTg5YTYuMDEgNi4wMSAwIDAgMS0xLjUtLjE4OW0zLjc1IDcuNDc4YTEyLjA2IDEyLjA2IDAgMCAxLTQuNSAwbTMuNzUgMi4zODNhMTQuNDA2IDE0LjQwNiAwIDAgMS0zIDBNMTQuMjUgMTh2LS4xOTJjMC0uOTgzLjY1OC0xLjgyMyAxLjUwOC0yLjMxNmE3LjUgNy41IDAgMSAwLTcuNTE3IDBjLjg1LjQ5MyAxLjUwOSAxLjMzMyAxLjUwOSAyLjMxNlYxOCIgLz4KPC9zdmc+Cg=="""
pass
def inlet(self, body: dict, user: Optional[dict] = None) -> dict:
body["thinking"] = {"type": "enabled", "budget_tokens": 2048}
return body
实现效果:
非常的优雅!
另外,这次新版本也补上了事件的文档,看起来结合新的Toggle Filter能玩出很多花样了



