coco-framework 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- coco/__init__.py +3 -0
- coco/agents/__init__.py +9 -0
- coco/agents/_subagent_transformer.py +307 -0
- coco/agents/factory.py +2164 -0
- coco/agents/middleware/__init__.py +100 -0
- coco/agents/middleware/_execution.py +385 -0
- coco/agents/middleware/_redaction.py +454 -0
- coco/agents/middleware/_retry.py +134 -0
- coco/agents/middleware/_trace_policy.py +61 -0
- coco/agents/middleware/context_editing.py +306 -0
- coco/agents/middleware/file_search.py +433 -0
- coco/agents/middleware/human_in_the_loop.py +680 -0
- coco/agents/middleware/internal_call_transformer.py +108 -0
- coco/agents/middleware/model_call_limit.py +267 -0
- coco/agents/middleware/model_fallback.py +417 -0
- coco/agents/middleware/model_retry.py +327 -0
- coco/agents/middleware/pii.py +878 -0
- coco/agents/middleware/provider_tool_search.py +307 -0
- coco/agents/middleware/shell_tool.py +949 -0
- coco/agents/middleware/summarization.py +910 -0
- coco/agents/middleware/todo.py +357 -0
- coco/agents/middleware/tool_call_limit.py +495 -0
- coco/agents/middleware/tool_emulator.py +251 -0
- coco/agents/middleware/tool_error.py +209 -0
- coco/agents/middleware/tool_retry.py +421 -0
- coco/agents/middleware/tool_selection.py +515 -0
- coco/agents/middleware/types.py +2201 -0
- coco/agents/structured_output.py +472 -0
- coco/chat_models/__init__.py +7 -0
- coco/chat_models/base.py +1082 -0
- coco/embeddings/__init__.py +18 -0
- coco/embeddings/base.py +279 -0
- coco/mcp/__init__.py +36 -0
- coco/mcp/adapter.py +245 -0
- coco/mcp/elicitation.py +394 -0
- coco/mcp/tools.py +307 -0
- coco/messages/__init__.py +73 -0
- coco/py.typed +0 -0
- coco/rate_limiters/__init__.py +13 -0
- coco/tools/__init__.py +22 -0
- coco/tools/tool_node.py +20 -0
- coco_anthropic/__init__.py +15 -0
- coco_anthropic/_client_utils.py +81 -0
- coco_anthropic/_compat.py +228 -0
- coco_anthropic/_sdk_compat.py +124 -0
- coco_anthropic/_version.py +3 -0
- coco_anthropic/chat_models.py +3349 -0
- coco_anthropic/data/__init__.py +1 -0
- coco_anthropic/data/_profiles.py +491 -0
- coco_anthropic/data/profile_augmentations.toml +69 -0
- coco_anthropic/experimental.py +140 -0
- coco_anthropic/llms.py +428 -0
- coco_anthropic/middleware/__init__.py +25 -0
- coco_anthropic/middleware/anthropic_tools.py +1197 -0
- coco_anthropic/middleware/bash.py +84 -0
- coco_anthropic/middleware/file_search.py +360 -0
- coco_anthropic/middleware/prompt_caching.py +276 -0
- coco_anthropic/output_parsers.py +93 -0
- coco_anthropic/py.typed +0 -0
- coco_core/__init__.py +20 -0
- coco_core/_api/__init__.py +87 -0
- coco_core/_api/beta_decorator.py +266 -0
- coco_core/_api/deprecation.py +637 -0
- coco_core/_api/internal.py +23 -0
- coco_core/_api/path.py +50 -0
- coco_core/_import_utils.py +41 -0
- coco_core/_protocol.py +625 -0
- coco_core/_security/__init__.py +36 -0
- coco_core/_security/_exceptions.py +9 -0
- coco_core/_security/_policy.py +313 -0
- coco_core/_security/_ssrf_protection.py +155 -0
- coco_core/_security/_transport.py +254 -0
- coco_core/agents.py +258 -0
- coco_core/caches.py +272 -0
- coco_core/callbacks/__init__.py +132 -0
- coco_core/callbacks/base.py +1229 -0
- coco_core/callbacks/file.py +266 -0
- coco_core/callbacks/manager.py +2826 -0
- coco_core/callbacks/stdout.py +123 -0
- coco_core/callbacks/streaming_stdout.py +154 -0
- coco_core/callbacks/usage.py +124 -0
- coco_core/chat_history.py +267 -0
- coco_core/chat_loaders.py +26 -0
- coco_core/chat_sessions.py +19 -0
- coco_core/cross_encoders.py +18 -0
- coco_core/document_loaders/__init__.py +36 -0
- coco_core/document_loaders/base.py +155 -0
- coco_core/document_loaders/blob_loaders.py +38 -0
- coco_core/documents/__init__.py +55 -0
- coco_core/documents/base.py +347 -0
- coco_core/documents/compressor.py +74 -0
- coco_core/documents/transformers.py +79 -0
- coco_core/embeddings/__init__.py +31 -0
- coco_core/embeddings/embeddings.py +78 -0
- coco_core/embeddings/fake.py +129 -0
- coco_core/env.py +22 -0
- coco_core/example_selectors/__init__.py +47 -0
- coco_core/example_selectors/base.py +60 -0
- coco_core/example_selectors/length_based.py +131 -0
- coco_core/example_selectors/semantic_similarity.py +366 -0
- coco_core/exceptions.py +166 -0
- coco_core/globals.py +72 -0
- coco_core/indexing/__init__.py +53 -0
- coco_core/indexing/api.py +954 -0
- coco_core/indexing/base.py +661 -0
- coco_core/indexing/in_memory.py +104 -0
- coco_core/language_models/__init__.py +116 -0
- coco_core/language_models/_compat_bridge.py +844 -0
- coco_core/language_models/_utils.py +343 -0
- coco_core/language_models/base.py +500 -0
- coco_core/language_models/chat_model_stream.py +1525 -0
- coco_core/language_models/chat_models.py +2748 -0
- coco_core/language_models/fake.py +137 -0
- coco_core/language_models/fake_chat_models.py +396 -0
- coco_core/language_models/llms.py +1569 -0
- coco_core/language_models/model_profile.py +183 -0
- coco_core/load/__init__.py +44 -0
- coco_core/load/_validation.py +191 -0
- coco_core/load/dump.py +120 -0
- coco_core/load/load.py +828 -0
- coco_core/load/mapping.py +1097 -0
- coco_core/load/serializable.py +406 -0
- coco_core/messages/__init__.py +198 -0
- coco_core/messages/ai.py +854 -0
- coco_core/messages/base.py +518 -0
- coco_core/messages/block_translators/__init__.py +112 -0
- coco_core/messages/block_translators/anthropic.py +534 -0
- coco_core/messages/block_translators/bedrock.py +108 -0
- coco_core/messages/block_translators/bedrock_converse.py +329 -0
- coco_core/messages/block_translators/coco_v0.py +303 -0
- coco_core/messages/block_translators/google_genai.py +610 -0
- coco_core/messages/block_translators/google_vertexai.py +21 -0
- coco_core/messages/block_translators/groq.py +157 -0
- coco_core/messages/block_translators/openai.py +1089 -0
- coco_core/messages/chat.py +64 -0
- coco_core/messages/content.py +1488 -0
- coco_core/messages/function.py +62 -0
- coco_core/messages/human.py +70 -0
- coco_core/messages/modifier.py +33 -0
- coco_core/messages/system.py +70 -0
- coco_core/messages/tool.py +418 -0
- coco_core/messages/utils.py +2442 -0
- coco_core/output_parsers/__init__.py +101 -0
- coco_core/output_parsers/base.py +361 -0
- coco_core/output_parsers/format_instructions.py +16 -0
- coco_core/output_parsers/json.py +139 -0
- coco_core/output_parsers/list.py +249 -0
- coco_core/output_parsers/openai_functions.py +324 -0
- coco_core/output_parsers/openai_tools.py +383 -0
- coco_core/output_parsers/pydantic.py +141 -0
- coco_core/output_parsers/string.py +63 -0
- coco_core/output_parsers/transform.py +175 -0
- coco_core/output_parsers/xml.py +301 -0
- coco_core/outputs/__init__.py +66 -0
- coco_core/outputs/chat_generation.py +147 -0
- coco_core/outputs/chat_result.py +39 -0
- coco_core/outputs/generation.py +80 -0
- coco_core/outputs/llm_result.py +112 -0
- coco_core/outputs/run_info.py +22 -0
- coco_core/prompt_values.py +161 -0
- coco_core/prompts/__init__.py +101 -0
- coco_core/prompts/base.py +508 -0
- coco_core/prompts/chat.py +1495 -0
- coco_core/prompts/dict.py +177 -0
- coco_core/prompts/few_shot.py +483 -0
- coco_core/prompts/few_shot_with_templates.py +239 -0
- coco_core/prompts/image.py +177 -0
- coco_core/prompts/loading.py +296 -0
- coco_core/prompts/message.py +97 -0
- coco_core/prompts/prompt.py +312 -0
- coco_core/prompts/string.py +399 -0
- coco_core/prompts/structured.py +214 -0
- coco_core/py.typed +0 -0
- coco_core/rate_limiters.py +254 -0
- coco_core/retrievers.py +328 -0
- coco_core/runnables/__init__.py +136 -0
- coco_core/runnables/base.py +6725 -0
- coco_core/runnables/branch.py +457 -0
- coco_core/runnables/config.py +712 -0
- coco_core/runnables/configurable.py +710 -0
- coco_core/runnables/fallbacks.py +663 -0
- coco_core/runnables/graph.py +741 -0
- coco_core/runnables/graph_ascii.py +366 -0
- coco_core/runnables/graph_mermaid.py +503 -0
- coco_core/runnables/graph_png.py +215 -0
- coco_core/runnables/history.py +631 -0
- coco_core/runnables/passthrough.py +849 -0
- coco_core/runnables/retry.py +379 -0
- coco_core/runnables/router.py +239 -0
- coco_core/runnables/schema.py +188 -0
- coco_core/runnables/utils.py +798 -0
- coco_core/stores.py +291 -0
- coco_core/structured_query.py +203 -0
- coco_core/sys_info.py +154 -0
- coco_core/tools/__init__.py +95 -0
- coco_core/tools/base.py +1948 -0
- coco_core/tools/convert.py +497 -0
- coco_core/tools/render.py +67 -0
- coco_core/tools/retriever.py +94 -0
- coco_core/tools/simple.py +208 -0
- coco_core/tools/structured.py +322 -0
- coco_core/tracers/__init__.py +47 -0
- coco_core/tracers/_compat.py +95 -0
- coco_core/tracers/_context.py +337 -0
- coco_core/tracers/_streaming.py +53 -0
- coco_core/tracers/base.py +955 -0
- coco_core/tracers/coco.py +279 -0
- coco_core/tracers/context.py +205 -0
- coco_core/tracers/core.py +766 -0
- coco_core/tracers/event_stream.py +1101 -0
- coco_core/tracers/log_stream.py +765 -0
- coco_core/tracers/memory_stream.py +200 -0
- coco_core/tracers/root_listeners.py +130 -0
- coco_core/tracers/run_collector.py +40 -0
- coco_core/tracers/schemas.py +14 -0
- coco_core/tracers/stdout.py +205 -0
- coco_core/utils/__init__.py +111 -0
- coco_core/utils/_gateway.py +274 -0
- coco_core/utils/_merge.py +218 -0
- coco_core/utils/aiter.py +357 -0
- coco_core/utils/env.py +86 -0
- coco_core/utils/formatting.py +80 -0
- coco_core/utils/function_calling.py +869 -0
- coco_core/utils/html.py +132 -0
- coco_core/utils/image.py +15 -0
- coco_core/utils/input.py +82 -0
- coco_core/utils/interactive_env.py +12 -0
- coco_core/utils/iter.py +229 -0
- coco_core/utils/json.py +230 -0
- coco_core/utils/json_schema.py +273 -0
- coco_core/utils/mustache.py +706 -0
- coco_core/utils/pydantic.py +631 -0
- coco_core/utils/strings.py +69 -0
- coco_core/utils/usage.py +61 -0
- coco_core/utils/utils.py +528 -0
- coco_core/utils/uuid.py +57 -0
- coco_core/vectorstores/__init__.py +53 -0
- coco_core/vectorstores/base.py +1111 -0
- coco_core/vectorstores/in_memory.py +546 -0
- coco_core/vectorstores/utils.py +163 -0
- coco_core/version.py +3 -0
- coco_framework-0.1.0.dist-info/METADATA +184 -0
- coco_framework-0.1.0.dist-info/RECORD +400 -0
- coco_framework-0.1.0.dist-info/WHEEL +4 -0
- coco_framework-0.1.0.dist-info/licenses/LICENSE +24 -0
- coco_framework-0.1.0.dist-info/licenses/NOTICE +15 -0
- coco_graph/_internal/__init__.py +4 -0
- coco_graph/_internal/_cache.py +31 -0
- coco_graph/_internal/_config.py +474 -0
- coco_graph/_internal/_constants.py +140 -0
- coco_graph/_internal/_fields.py +213 -0
- coco_graph/_internal/_future.py +220 -0
- coco_graph/_internal/_pydantic.py +275 -0
- coco_graph/_internal/_queue.py +124 -0
- coco_graph/_internal/_replay.py +90 -0
- coco_graph/_internal/_retry.py +29 -0
- coco_graph/_internal/_runnable.py +969 -0
- coco_graph/_internal/_scratchpad.py +19 -0
- coco_graph/_internal/_serde.py +253 -0
- coco_graph/_internal/_timeout.py +25 -0
- coco_graph/_internal/_typing.py +54 -0
- coco_graph/cache/base/__init__.py +48 -0
- coco_graph/cache/base/py.typed +0 -0
- coco_graph/cache/memory/__init__.py +73 -0
- coco_graph/cache/redis/__init__.py +144 -0
- coco_graph/cache/sqlite/__init__.py +120 -0
- coco_graph/callbacks.py +394 -0
- coco_graph/channels/__init__.py +29 -0
- coco_graph/channels/any_value.py +72 -0
- coco_graph/channels/base.py +121 -0
- coco_graph/channels/binop.py +155 -0
- coco_graph/channels/delta.py +202 -0
- coco_graph/channels/ephemeral_value.py +79 -0
- coco_graph/channels/last_value.py +151 -0
- coco_graph/channels/named_barrier_value.py +167 -0
- coco_graph/channels/topic.py +94 -0
- coco_graph/channels/untracked_value.py +73 -0
- coco_graph/checkpoint/base/__init__.py +861 -0
- coco_graph/checkpoint/base/id.py +109 -0
- coco_graph/checkpoint/base/py.typed +0 -0
- coco_graph/checkpoint/memory/__init__.py +698 -0
- coco_graph/checkpoint/memory/py.typed +0 -0
- coco_graph/checkpoint/postgres/__init__.py +602 -0
- coco_graph/checkpoint/postgres/_ainternal.py +23 -0
- coco_graph/checkpoint/postgres/_internal.py +21 -0
- coco_graph/checkpoint/postgres/aio.py +691 -0
- coco_graph/checkpoint/postgres/base.py +666 -0
- coco_graph/checkpoint/postgres/py.typed +0 -0
- coco_graph/checkpoint/postgres/shallow.py +967 -0
- coco_graph/checkpoint/serde/__init__.py +0 -0
- coco_graph/checkpoint/serde/_msgpack.py +97 -0
- coco_graph/checkpoint/serde/base.py +64 -0
- coco_graph/checkpoint/serde/encrypted.py +80 -0
- coco_graph/checkpoint/serde/event_hooks.py +52 -0
- coco_graph/checkpoint/serde/jsonplus.py +883 -0
- coco_graph/checkpoint/serde/py.typed +0 -0
- coco_graph/checkpoint/serde/types.py +68 -0
- coco_graph/checkpoint/sqlite/__init__.py +645 -0
- coco_graph/checkpoint/sqlite/_delta.py +172 -0
- coco_graph/checkpoint/sqlite/aio.py +738 -0
- coco_graph/checkpoint/sqlite/py.typed +0 -0
- coco_graph/checkpoint/sqlite/utils.py +116 -0
- coco_graph/config.py +196 -0
- coco_graph/constants.py +64 -0
- coco_graph/errors.py +241 -0
- coco_graph/func/__init__.py +620 -0
- coco_graph/graph/__init__.py +12 -0
- coco_graph/graph/_branch.py +225 -0
- coco_graph/graph/_node.py +103 -0
- coco_graph/graph/message.py +437 -0
- coco_graph/graph/state.py +1978 -0
- coco_graph/graph/ui.py +227 -0
- coco_graph/managed/__init__.py +3 -0
- coco_graph/managed/base.py +31 -0
- coco_graph/managed/is_last_step.py +24 -0
- coco_graph/prebuilt/__init__.py +23 -0
- coco_graph/prebuilt/_tool_call_stream.py +117 -0
- coco_graph/prebuilt/_tool_call_transformer.py +165 -0
- coco_graph/prebuilt/chat_agent_executor.py +1015 -0
- coco_graph/prebuilt/interrupt.py +105 -0
- coco_graph/prebuilt/py.typed +0 -0
- coco_graph/prebuilt/tool_node.py +2030 -0
- coco_graph/prebuilt/tool_validator.py +221 -0
- coco_graph/pregel/__init__.py +3 -0
- coco_graph/pregel/_algo.py +1460 -0
- coco_graph/pregel/_call.py +298 -0
- coco_graph/pregel/_checkpoint.py +331 -0
- coco_graph/pregel/_config.py +0 -0
- coco_graph/pregel/_draw.py +294 -0
- coco_graph/pregel/_executor.py +223 -0
- coco_graph/pregel/_io.py +174 -0
- coco_graph/pregel/_log.py +3 -0
- coco_graph/pregel/_loop.py +1988 -0
- coco_graph/pregel/_messages.py +461 -0
- coco_graph/pregel/_read.py +312 -0
- coco_graph/pregel/_retry.py +854 -0
- coco_graph/pregel/_runner.py +941 -0
- coco_graph/pregel/_tools.py +268 -0
- coco_graph/pregel/_utils.py +221 -0
- coco_graph/pregel/_validate.py +120 -0
- coco_graph/pregel/_write.py +192 -0
- coco_graph/pregel/debug.py +302 -0
- coco_graph/pregel/main.py +4364 -0
- coco_graph/pregel/protocol.py +288 -0
- coco_graph/pregel/types.py +38 -0
- coco_graph/py.typed +0 -0
- coco_graph/runtime.py +350 -0
- coco_graph/store/base/__init__.py +1322 -0
- coco_graph/store/base/batch.py +371 -0
- coco_graph/store/base/embed.py +436 -0
- coco_graph/store/base/py.typed +0 -0
- coco_graph/store/memory/__init__.py +592 -0
- coco_graph/store/memory/py.typed +0 -0
- coco_graph/store/postgres/__init__.py +4 -0
- coco_graph/store/postgres/aio.py +592 -0
- coco_graph/store/postgres/base.py +1480 -0
- coco_graph/store/postgres/py.typed +0 -0
- coco_graph/store/sqlite/__init__.py +4 -0
- coco_graph/store/sqlite/aio.py +632 -0
- coco_graph/store/sqlite/base.py +1514 -0
- coco_graph/stream/__init__.py +45 -0
- coco_graph/stream/_convert.py +32 -0
- coco_graph/stream/_mux.py +523 -0
- coco_graph/stream/_types.py +330 -0
- coco_graph/stream/run_stream.py +735 -0
- coco_graph/stream/stream_channel.py +341 -0
- coco_graph/stream/transformers.py +1039 -0
- coco_graph/types.py +1079 -0
- coco_graph/typing.py +48 -0
- coco_graph/utils/__init__.py +1 -0
- coco_graph/utils/config.py +4 -0
- coco_graph/utils/runnable.py +3 -0
- coco_graph/version.py +13 -0
- coco_graph/warnings.py +69 -0
- coco_openai/__init__.py +20 -0
- coco_openai/_compat.py +45 -0
- coco_openai/_version.py +3 -0
- coco_openai/chat_models/__init__.py +6 -0
- coco_openai/chat_models/_client_utils.py +684 -0
- coco_openai/chat_models/_compat.py +525 -0
- coco_openai/chat_models/azure.py +1227 -0
- coco_openai/chat_models/base.py +5654 -0
- coco_openai/chat_models/codex.py +557 -0
- coco_openai/chatgpt_oauth.py +1063 -0
- coco_openai/data/__init__.py +1 -0
- coco_openai/data/_profiles.py +1655 -0
- coco_openai/data/profile_augmentations.toml +127 -0
- coco_openai/embeddings/__init__.py +6 -0
- coco_openai/embeddings/azure.py +240 -0
- coco_openai/embeddings/base.py +820 -0
- coco_openai/llms/__init__.py +6 -0
- coco_openai/llms/azure.py +249 -0
- coco_openai/llms/base.py +919 -0
- coco_openai/middleware/__init__.py +11 -0
- coco_openai/middleware/openai_moderation.py +484 -0
- coco_openai/output_parsers/__init__.py +9 -0
- coco_openai/output_parsers/tools.py +9 -0
- coco_openai/py.typed +0 -0
- coco_openai/tools/__init__.py +5 -0
- coco_openai/tools/custom_tool.py +111 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""In memory document index."""
|
|
2
|
+
|
|
3
|
+
import operator
|
|
4
|
+
import uuid
|
|
5
|
+
from collections.abc import Sequence
|
|
6
|
+
from typing import Any, cast
|
|
7
|
+
|
|
8
|
+
from pydantic import Field
|
|
9
|
+
from typing_extensions import override
|
|
10
|
+
|
|
11
|
+
from coco_core._api import beta
|
|
12
|
+
from coco_core.callbacks import CallbackManagerForRetrieverRun
|
|
13
|
+
from coco_core.documents import Document
|
|
14
|
+
from coco_core.indexing import UpsertResponse
|
|
15
|
+
from coco_core.indexing.base import DeleteResponse, DocumentIndex
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@beta(message="Introduced in version 0.2.29. Underlying abstraction subject to change.")
|
|
19
|
+
class InMemoryDocumentIndex(DocumentIndex):
|
|
20
|
+
"""In memory document index.
|
|
21
|
+
|
|
22
|
+
This is an in-memory document index that stores documents in a dictionary.
|
|
23
|
+
|
|
24
|
+
It provides a simple search API that returns documents by the number of
|
|
25
|
+
counts the given query appears in the document.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
store: dict[str, Document] = Field(default_factory=dict)
|
|
29
|
+
top_k: int = 4
|
|
30
|
+
|
|
31
|
+
@override
|
|
32
|
+
def upsert(self, items: Sequence[Document], /, **kwargs: Any) -> UpsertResponse:
|
|
33
|
+
"""Upsert documents into the index.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
items: Sequence of documents to add to the index.
|
|
37
|
+
**kwargs: Additional keyword arguments.
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
A response object that contains the list of IDs that were
|
|
41
|
+
successfully added or updated in the index and the list of IDs that
|
|
42
|
+
failed to be added or updated.
|
|
43
|
+
"""
|
|
44
|
+
ok_ids = []
|
|
45
|
+
|
|
46
|
+
for item in items:
|
|
47
|
+
if item.id is None:
|
|
48
|
+
id_ = str(uuid.uuid4())
|
|
49
|
+
item_ = item.model_copy()
|
|
50
|
+
item_.id = id_
|
|
51
|
+
else:
|
|
52
|
+
item_ = item
|
|
53
|
+
id_ = item.id
|
|
54
|
+
|
|
55
|
+
self.store[id_] = item_
|
|
56
|
+
ok_ids.append(cast("str", item_.id))
|
|
57
|
+
|
|
58
|
+
return UpsertResponse(succeeded=ok_ids, failed=[])
|
|
59
|
+
|
|
60
|
+
@override
|
|
61
|
+
def delete(self, ids: list[str] | None = None, **kwargs: Any) -> DeleteResponse:
|
|
62
|
+
"""Delete by IDs.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
ids: List of IDs to delete.
|
|
66
|
+
|
|
67
|
+
Raises:
|
|
68
|
+
ValueError: If IDs is None.
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
A response object that contains the list of IDs that were successfully
|
|
72
|
+
deleted and the list of IDs that failed to be deleted.
|
|
73
|
+
"""
|
|
74
|
+
if ids is None:
|
|
75
|
+
msg = "IDs must be provided for deletion"
|
|
76
|
+
raise ValueError(msg)
|
|
77
|
+
|
|
78
|
+
ok_ids = []
|
|
79
|
+
|
|
80
|
+
for id_ in ids:
|
|
81
|
+
if id_ in self.store:
|
|
82
|
+
del self.store[id_]
|
|
83
|
+
ok_ids.append(id_)
|
|
84
|
+
|
|
85
|
+
return DeleteResponse(
|
|
86
|
+
succeeded=ok_ids, num_deleted=len(ok_ids), num_failed=0, failed=[]
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
@override
|
|
90
|
+
def get(self, ids: Sequence[str], /, **kwargs: Any) -> list[Document]:
|
|
91
|
+
return [self.store[id_] for id_ in ids if id_ in self.store]
|
|
92
|
+
|
|
93
|
+
@override
|
|
94
|
+
def _get_relevant_documents(
|
|
95
|
+
self, query: str, *, run_manager: CallbackManagerForRetrieverRun
|
|
96
|
+
) -> list[Document]:
|
|
97
|
+
counts_by_doc = []
|
|
98
|
+
|
|
99
|
+
for document in self.store.values():
|
|
100
|
+
count = document.page_content.count(query)
|
|
101
|
+
counts_by_doc.append((document, count))
|
|
102
|
+
|
|
103
|
+
counts_by_doc.sort(key=operator.itemgetter(1), reverse=True)
|
|
104
|
+
return [doc.model_copy() for doc, count in counts_by_doc[: self.top_k]]
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""Core language model abstractions.
|
|
2
|
+
|
|
3
|
+
Coco has two main classes to work with language models: chat models and
|
|
4
|
+
"old-fashioned" LLMs (string-in, string-out).
|
|
5
|
+
|
|
6
|
+
**Chat models**
|
|
7
|
+
|
|
8
|
+
Language models that use a sequence of messages as inputs and return chat messages
|
|
9
|
+
as outputs (as opposed to using plain text).
|
|
10
|
+
|
|
11
|
+
Chat models support the assignment of distinct roles to conversation messages, helping
|
|
12
|
+
to distinguish messages from the AI, users, and instructions such as system messages.
|
|
13
|
+
|
|
14
|
+
The key abstraction for chat models is
|
|
15
|
+
[`BaseChatModel`][coco_core.language_models.BaseChatModel]. Implementations should
|
|
16
|
+
inherit from this class.
|
|
17
|
+
|
|
18
|
+
See existing [chat model integrations](https://docs.langchain.com/oss/python/integrations/chat).
|
|
19
|
+
|
|
20
|
+
**LLMs (legacy)**
|
|
21
|
+
|
|
22
|
+
Language models that takes a string as input and returns a string.
|
|
23
|
+
|
|
24
|
+
These are traditionally older models (newer models generally are chat models).
|
|
25
|
+
|
|
26
|
+
Although the underlying models are string in, string out, the Coco wrappers also
|
|
27
|
+
allow these models to take messages as input. This gives them the same interface as
|
|
28
|
+
chat models. When messages are passed in as input, they will be formatted into a string
|
|
29
|
+
under the hood before being passed to the underlying model.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
from typing import TYPE_CHECKING
|
|
33
|
+
|
|
34
|
+
from coco_core._import_utils import import_attr
|
|
35
|
+
from coco_core.language_models._utils import is_openai_data_block
|
|
36
|
+
|
|
37
|
+
if TYPE_CHECKING:
|
|
38
|
+
from coco_core.language_models.base import (
|
|
39
|
+
BaseLanguageModel,
|
|
40
|
+
LangSmithParams,
|
|
41
|
+
LanguageModelInput,
|
|
42
|
+
LanguageModelLike,
|
|
43
|
+
LanguageModelOutput,
|
|
44
|
+
get_tokenizer,
|
|
45
|
+
)
|
|
46
|
+
from coco_core.language_models.chat_models import (
|
|
47
|
+
BaseChatModel,
|
|
48
|
+
SimpleChatModel,
|
|
49
|
+
)
|
|
50
|
+
from coco_core.language_models.fake import FakeListLLM, FakeStreamingListLLM
|
|
51
|
+
from coco_core.language_models.fake_chat_models import (
|
|
52
|
+
FakeListChatModel,
|
|
53
|
+
FakeMessagesListChatModel,
|
|
54
|
+
GenericFakeChatModel,
|
|
55
|
+
ParrotFakeChatModel,
|
|
56
|
+
)
|
|
57
|
+
from coco_core.language_models.llms import LLM, BaseLLM
|
|
58
|
+
from coco_core.language_models.model_profile import (
|
|
59
|
+
ModelProfile,
|
|
60
|
+
ModelProfileRegistry,
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
__all__ = (
|
|
64
|
+
"LLM",
|
|
65
|
+
"BaseChatModel",
|
|
66
|
+
"BaseLLM",
|
|
67
|
+
"BaseLanguageModel",
|
|
68
|
+
"FakeListChatModel",
|
|
69
|
+
"FakeListLLM",
|
|
70
|
+
"FakeMessagesListChatModel",
|
|
71
|
+
"FakeStreamingListLLM",
|
|
72
|
+
"GenericFakeChatModel",
|
|
73
|
+
"LangSmithParams",
|
|
74
|
+
"LanguageModelInput",
|
|
75
|
+
"LanguageModelLike",
|
|
76
|
+
"LanguageModelOutput",
|
|
77
|
+
"ModelProfile",
|
|
78
|
+
"ModelProfileRegistry",
|
|
79
|
+
"ParrotFakeChatModel",
|
|
80
|
+
"SimpleChatModel",
|
|
81
|
+
"get_tokenizer",
|
|
82
|
+
"is_openai_data_block",
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
_dynamic_imports = {
|
|
86
|
+
"BaseLanguageModel": "base",
|
|
87
|
+
"LangSmithParams": "base",
|
|
88
|
+
"LanguageModelInput": "base",
|
|
89
|
+
"LanguageModelLike": "base",
|
|
90
|
+
"LanguageModelOutput": "base",
|
|
91
|
+
"get_tokenizer": "base",
|
|
92
|
+
"BaseChatModel": "chat_models",
|
|
93
|
+
"SimpleChatModel": "chat_models",
|
|
94
|
+
"FakeListLLM": "fake",
|
|
95
|
+
"FakeStreamingListLLM": "fake",
|
|
96
|
+
"FakeListChatModel": "fake_chat_models",
|
|
97
|
+
"FakeMessagesListChatModel": "fake_chat_models",
|
|
98
|
+
"GenericFakeChatModel": "fake_chat_models",
|
|
99
|
+
"ParrotFakeChatModel": "fake_chat_models",
|
|
100
|
+
"LLM": "llms",
|
|
101
|
+
"ModelProfile": "model_profile",
|
|
102
|
+
"ModelProfileRegistry": "model_profile",
|
|
103
|
+
"BaseLLM": "llms",
|
|
104
|
+
"is_openai_data_block": "_utils",
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def __getattr__(attr_name: str) -> object:
|
|
109
|
+
module_name = _dynamic_imports.get(attr_name)
|
|
110
|
+
result = import_attr(attr_name, module_name, __spec__.parent)
|
|
111
|
+
globals()[attr_name] = result
|
|
112
|
+
return result
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def __dir__() -> list[str]:
|
|
116
|
+
return list(__all__)
|