Files
wehub-resource-sync 4a19d70af1
Lint with Ruff / ruff (push) Has been cancelled
MCP Server Tests / live-mcp-tests (push) Has been cancelled
Tests / unit-tests (push) Has been cancelled
Tests / database-integration-tests (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Server Tests / live-server-tests (push) Has been cancelled
Pyright Type Check / pyright (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:54 +08:00

103 lines
4.0 KiB
Python

"""
Copyright 2024, Zep Software, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from typing import Any, Protocol, TypedDict
from .dedupe_edges import Prompt as DedupeEdgesPrompt
from .dedupe_edges import Versions as DedupeEdgesVersions
from .dedupe_edges import versions as dedupe_edges_versions
from .dedupe_nodes import Prompt as DedupeNodesPrompt
from .dedupe_nodes import Versions as DedupeNodesVersions
from .dedupe_nodes import versions as dedupe_nodes_versions
from .eval import Prompt as EvalPrompt
from .eval import Versions as EvalVersions
from .eval import versions as eval_versions
from .extract_edges import Prompt as ExtractEdgesPrompt
from .extract_edges import Versions as ExtractEdgesVersions
from .extract_edges import versions as extract_edges_versions
from .extract_nodes import Prompt as ExtractNodesPrompt
from .extract_nodes import Versions as ExtractNodesVersions
from .extract_nodes import versions as extract_nodes_versions
from .extract_nodes_and_edges import Prompt as ExtractNodesAndEdgesPrompt
from .extract_nodes_and_edges import Versions as ExtractNodesAndEdgesVersions
from .extract_nodes_and_edges import versions as extract_nodes_and_edges_versions
from .models import Message, PromptFunction
from .prompt_helpers import DO_NOT_ESCAPE_UNICODE
from .summarize_nodes import Prompt as SummarizeNodesPrompt
from .summarize_nodes import Versions as SummarizeNodesVersions
from .summarize_nodes import versions as summarize_nodes_versions
from .summarize_sagas import Prompt as SummarizeSagasPrompt
from .summarize_sagas import Versions as SummarizeSagasVersions
from .summarize_sagas import versions as summarize_sagas_versions
class PromptLibrary(Protocol):
extract_nodes: ExtractNodesPrompt
dedupe_nodes: DedupeNodesPrompt
extract_edges: ExtractEdgesPrompt
extract_nodes_and_edges: ExtractNodesAndEdgesPrompt
dedupe_edges: DedupeEdgesPrompt
summarize_nodes: SummarizeNodesPrompt
summarize_sagas: SummarizeSagasPrompt
eval: EvalPrompt
class PromptLibraryImpl(TypedDict):
extract_nodes: ExtractNodesVersions
dedupe_nodes: DedupeNodesVersions
extract_edges: ExtractEdgesVersions
extract_nodes_and_edges: ExtractNodesAndEdgesVersions
dedupe_edges: DedupeEdgesVersions
summarize_nodes: SummarizeNodesVersions
summarize_sagas: SummarizeSagasVersions
eval: EvalVersions
class VersionWrapper:
def __init__(self, func: PromptFunction):
self.func = func
def __call__(self, context: dict[str, Any]) -> list[Message]:
messages = self.func(context)
for message in messages:
message.content += DO_NOT_ESCAPE_UNICODE if message.role == 'system' else ''
return messages
class PromptTypeWrapper:
def __init__(self, versions: dict[str, PromptFunction]):
for version, func in versions.items():
setattr(self, version, VersionWrapper(func))
class PromptLibraryWrapper:
def __init__(self, library: PromptLibraryImpl):
for prompt_type, versions in library.items():
setattr(self, prompt_type, PromptTypeWrapper(versions)) # type: ignore[arg-type]
PROMPT_LIBRARY_IMPL: PromptLibraryImpl = {
'extract_nodes': extract_nodes_versions,
'dedupe_nodes': dedupe_nodes_versions,
'extract_edges': extract_edges_versions,
'extract_nodes_and_edges': extract_nodes_and_edges_versions,
'dedupe_edges': dedupe_edges_versions,
'summarize_nodes': summarize_nodes_versions,
'summarize_sagas': summarize_sagas_versions,
'eval': eval_versions,
}
prompt_library: PromptLibrary = PromptLibraryWrapper(PROMPT_LIBRARY_IMPL) # type: ignore[assignment]