From f4e34a2e0afb6425c3a07cdce5662f4957164b3f Mon Sep 17 00:00:00 2001 From: Ahmad Haidar Date: Mon, 6 Jan 2025 14:05:10 +0300 Subject: [PATCH 1/2] fix(memory-store): Add delete cascade migration to the ``fk-executions_task`` foreign key --- .../000020_executions_task_cascade.down.sql | 13 +++++++++++++ .../000020_executions_task_cascade.up.sql | 14 ++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 memory-store/migrations/000020_executions_task_cascade.down.sql create mode 100644 memory-store/migrations/000020_executions_task_cascade.up.sql diff --git a/memory-store/migrations/000020_executions_task_cascade.down.sql b/memory-store/migrations/000020_executions_task_cascade.down.sql new file mode 100644 index 000000000..5fed64bea --- /dev/null +++ b/memory-store/migrations/000020_executions_task_cascade.down.sql @@ -0,0 +1,13 @@ +BEGIN; + +-- Remove cascading foreign key constraint +ALTER TABLE executions + DROP CONSTRAINT IF EXISTS fk_executions_task; + +-- Restore original foreign key without cascading behavior +ALTER TABLE executions + ADD CONSTRAINT fk_executions_task + FOREIGN KEY (developer_id, task_id, task_version) + REFERENCES tasks (developer_id, task_id, "version"); + +COMMIT; diff --git a/memory-store/migrations/000020_executions_task_cascade.up.sql b/memory-store/migrations/000020_executions_task_cascade.up.sql new file mode 100644 index 000000000..076429cd3 --- /dev/null +++ b/memory-store/migrations/000020_executions_task_cascade.up.sql @@ -0,0 +1,14 @@ +BEGIN; + +-- Temporarily remove foreign key to modify its behavior +ALTER TABLE executions + DROP CONSTRAINT IF EXISTS fk_executions_task; + +-- Recreate foreign key with cascading deletes +ALTER TABLE executions + ADD CONSTRAINT fk_executions_task + FOREIGN KEY (developer_id, task_id, task_version) + REFERENCES tasks (developer_id, task_id, "version") + ON DELETE CASCADE; + +COMMIT; From e1b406c5d440685ea38110f8b112d8eff8ddef8d Mon Sep 17 00:00:00 2001 From: Ahmad Haidar Date: Mon, 6 Jan 2025 18:38:56 +0300 Subject: [PATCH 2/2] fix(agents-api): Configure list and get docs return types for embeddings and content + Fix confidence issue --- agents-api/agents_api/autogen/Docs.py | 4 ++-- agents-api/agents_api/queries/docs/get_doc.py | 4 ++-- agents-api/agents_api/queries/docs/list_docs.py | 4 ++-- .../agents_api/queries/docs/search_docs_by_embedding.py | 2 +- agents-api/agents_api/queries/docs/search_docs_hybrid.py | 2 +- integrations-service/integrations/autogen/Docs.py | 4 ++-- typespec/docs/models.tsp | 4 ++-- typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/agents-api/agents_api/autogen/Docs.py b/agents-api/agents_api/autogen/Docs.py index 0139abfd5..2472c4b2d 100644 --- a/agents-api/agents_api/autogen/Docs.py +++ b/agents-api/agents_api/autogen/Docs.py @@ -153,7 +153,7 @@ class HybridDocSearchRequest(BaseDocSearchRequest): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 + confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0 """ The confidence cutoff level """ @@ -222,7 +222,7 @@ class VectorDocSearchRequest(BaseDocSearchRequest): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 + confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0 """ The confidence cutoff level """ diff --git a/agents-api/agents_api/queries/docs/get_doc.py b/agents-api/agents_api/queries/docs/get_doc.py index 18049e350..7f4cedf32 100644 --- a/agents-api/agents_api/queries/docs/get_doc.py +++ b/agents-api/agents_api/queries/docs/get_doc.py @@ -44,9 +44,9 @@ def transform_get_doc(d: dict) -> dict: - content = d["content"][0] if len(d["content"]) == 1 else d["content"] + content = d["content"] - embeddings = d["embeddings"][0] if len(d["embeddings"]) == 1 else d["embeddings"] + embeddings = d["embeddings"] if isinstance(embeddings, str): embeddings = json.loads(embeddings) diff --git a/agents-api/agents_api/queries/docs/list_docs.py b/agents-api/agents_api/queries/docs/list_docs.py index ae80acf9a..934cdcfbd 100644 --- a/agents-api/agents_api/queries/docs/list_docs.py +++ b/agents-api/agents_api/queries/docs/list_docs.py @@ -52,9 +52,9 @@ def transform_list_docs(d: dict) -> dict: - content = d["content"][0] if len(d["content"]) == 1 else d["content"] + content = d["content"] - embeddings = d["embeddings"][0] if len(d["embeddings"]) == 1 else d["embeddings"] + embeddings = d["embeddings"] if isinstance(embeddings, str): embeddings = json.loads(embeddings) diff --git a/agents-api/agents_api/queries/docs/search_docs_by_embedding.py b/agents-api/agents_api/queries/docs/search_docs_by_embedding.py index 3addcd236..64dff4c42 100644 --- a/agents-api/agents_api/queries/docs/search_docs_by_embedding.py +++ b/agents-api/agents_api/queries/docs/search_docs_by_embedding.py @@ -74,7 +74,7 @@ async def search_docs_by_embedding( owner_types, owner_ids, k, - confidence, + 1.0 - confidence, metadata_filter, ], ) diff --git a/agents-api/agents_api/queries/docs/search_docs_hybrid.py b/agents-api/agents_api/queries/docs/search_docs_hybrid.py index 5c09b802c..f17d8201f 100644 --- a/agents-api/agents_api/queries/docs/search_docs_hybrid.py +++ b/agents-api/agents_api/queries/docs/search_docs_hybrid.py @@ -91,7 +91,7 @@ async def search_docs_hybrid( owner_ids, k, alpha, - confidence, + 1.0 - confidence, metadata_filter, search_language, ], diff --git a/integrations-service/integrations/autogen/Docs.py b/integrations-service/integrations/autogen/Docs.py index 0139abfd5..2472c4b2d 100644 --- a/integrations-service/integrations/autogen/Docs.py +++ b/integrations-service/integrations/autogen/Docs.py @@ -153,7 +153,7 @@ class HybridDocSearchRequest(BaseDocSearchRequest): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 + confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0 """ The confidence cutoff level """ @@ -222,7 +222,7 @@ class VectorDocSearchRequest(BaseDocSearchRequest): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 + confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0 """ The confidence cutoff level """ diff --git a/typespec/docs/models.tsp b/typespec/docs/models.tsp index 152778be6..6310b42c5 100644 --- a/typespec/docs/models.tsp +++ b/typespec/docs/models.tsp @@ -127,7 +127,7 @@ model VectorDocSearchRequest extends BaseDocSearchRequest { /** The confidence cutoff level */ @minValue(0) @maxValue(1) - confidence: float = 0.5; + confidence: float = 0; /** Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. */ vector: float[]; @@ -148,7 +148,7 @@ model HybridDocSearchRequest extends BaseDocSearchRequest { /** The confidence cutoff level */ @minValue(0) @maxValue(1) - confidence: float = 0.5; + confidence: float = 0; /** The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; */ @minValue(0) diff --git a/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml b/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml index f9ad4aa86..8861ae9cd 100644 --- a/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml +++ b/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml @@ -2986,7 +2986,7 @@ components: minimum: 0 maximum: 1 description: The confidence cutoff level - default: 0.5 + default: 0 alpha: type: number minimum: 0 @@ -3069,7 +3069,7 @@ components: minimum: 0 maximum: 1 description: The confidence cutoff level - default: 0.5 + default: 0 vector: type: array items: