mirror of
https://github.com/langgenius/dify-plugin-sdks.git
synced 2026-07-22 10:25:23 -04:00
f902504af0
* Inline multimodal entities into existing models * apply ruff * bump to 0.7.0b1 * fix: remove tenant_id from invoke_multimodal_embedding * tests: add rerank * apply ruff * fix * fix: typing
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
from dify_plugin.core.entities.invocation import InvokeType
|
|
from dify_plugin.core.runtime import BackwardsInvocation
|
|
from dify_plugin.entities.model.rerank import (
|
|
MultiModalRerankModelConfig,
|
|
MultiModalRerankResult,
|
|
RerankModelConfig,
|
|
RerankResult,
|
|
)
|
|
from dify_plugin.entities.model.text_embedding import MultiModalContent
|
|
|
|
|
|
class RerankInvocation(BackwardsInvocation[RerankResult]):
|
|
def invoke(self, model_config: RerankModelConfig, docs: list[str], query: str) -> RerankResult:
|
|
"""
|
|
Invoke rerank
|
|
"""
|
|
for data in self._backwards_invoke(
|
|
InvokeType.Rerank,
|
|
RerankResult,
|
|
{
|
|
**model_config.model_dump(),
|
|
"docs": docs,
|
|
"query": query,
|
|
},
|
|
):
|
|
return data
|
|
|
|
raise Exception("No response from rerank")
|
|
|
|
def invoke_multimodal(
|
|
self,
|
|
model_config: MultiModalRerankModelConfig,
|
|
query: MultiModalContent,
|
|
docs: list[MultiModalContent],
|
|
) -> MultiModalRerankResult:
|
|
payload = {
|
|
**model_config.model_dump(),
|
|
"query": query.model_dump() if isinstance(query, MultiModalContent) else query,
|
|
"docs": [doc.model_dump() if isinstance(doc, MultiModalContent) else doc for doc in docs],
|
|
}
|
|
|
|
for data in self._backwards_invoke(
|
|
InvokeType.MultimodalRerank,
|
|
MultiModalRerankResult,
|
|
payload,
|
|
):
|
|
return data
|
|
|
|
raise Exception("No response from multimodal rerank")
|