Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ all: venv format check test build

.PHONY: format
format: venv
.venv/bin/black -tpy312 -tpy313 -tpy314 typeagent test tools gmail $(FLAGS)
.venv/bin/black -tpy312 -tpy313 -tpy314 typeagent test tools gmail demo $(FLAGS)

.PHONY: check
check: venv
Expand Down
2 changes: 1 addition & 1 deletion make.bat
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ goto help
:format
if not exist ".venv\" call make.bat venv
echo Formatting code...
.venv\Scripts\black typeagent test tools
.venv\Scripts\black typeagent test tools gmail demo
goto end

:check
Expand Down
2 changes: 1 addition & 1 deletion test/test_interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ def test_text_range_equality_with_logical_equivalence():

# Test with non-TextRange object
assert point_range != "not a TextRange"
assert point_range != None
assert point_range is not None


def test_text_range_equality_both_explicit_ends():
Expand Down
17 changes: 10 additions & 7 deletions tools/ingest_vtt.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,6 @@ def create_arg_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description="Ingest WebVTT transcript files into a database for querying",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
%(prog)s input.vtt --database transcript.db
%(prog)s file1.vtt file2.vtt -d transcript.db --name "Combined Transcript"
%(prog)s lecture.vtt -d lecture.db --merge
""",
)

parser.add_argument(
Expand Down Expand Up @@ -90,6 +84,13 @@ def create_arg_parser() -> argparse.ArgumentParser:
help="Batch size for knowledge extraction (default: from settings)",
)

parser.add_argument(
"--embedding-name",
type=str,
default=None,
help="Embedding model name (default: text-embedding-ada-002)",
)

parser.add_argument(
"-v", "--verbose", action="store_true", help="Show verbose output"
)
Expand Down Expand Up @@ -135,6 +136,7 @@ async def ingest_vtt_files(
merge_consecutive: bool = False,
verbose: bool = False,
batchsize: int | None = None,
embedding_name: str | None = None,
) -> None:
"""Ingest one or more VTT files into a database."""

Expand Down Expand Up @@ -197,7 +199,7 @@ async def ingest_vtt_files(
if verbose:
print("Setting up conversation settings...")
try:
embedding_model = AsyncEmbeddingModel()
embedding_model = AsyncEmbeddingModel(model_name=embedding_name)
settings = ConversationSettings(embedding_model)

# Create storage provider explicitly with the database
Expand Down Expand Up @@ -441,6 +443,7 @@ def main():
name=args.name,
merge_consecutive=args.merge,
batchsize=args.batchsize,
embedding_name=args.embedding_name,
verbose=args.verbose,
)
)
Expand Down
16 changes: 4 additions & 12 deletions typeagent/knowpro/convsettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,36 +59,28 @@ def __init__(

# Storage provider will be created lazily if not provided
self._storage_provider: IStorageProvider | None = storage_provider
self._storage_provider_created = storage_provider is not None

@property
def storage_provider(self) -> IStorageProvider:
if not self._storage_provider_created:
if self._storage_provider is None:
raise RuntimeError(
"Storage provider not initialized. Use await ConversationSettings.get_storage_provider() "
"Storage provider not initialized. "
"Use await ConversationSettings.get_storage_provider() "
"or provide storage_provider in constructor."
)
assert (
self._storage_provider is not None
), "Storage provider should be set when _storage_provider_created is True"
return self._storage_provider

@storage_provider.setter
def storage_provider(self, value: IStorageProvider) -> None:
self._storage_provider = value
self._storage_provider_created = True

async def get_storage_provider(self) -> IStorageProvider:
"""Get or create the storage provider asynchronously."""
if not self._storage_provider_created:
if self._storage_provider is None:
from ..storage.memory import MemoryStorageProvider

self._storage_provider = MemoryStorageProvider(
message_text_settings=self.message_text_index_settings,
related_terms_settings=self.related_term_index_settings,
)
self._storage_provider_created = True
assert (
self._storage_provider is not None
), "Storage provider should be set after creation"
return self._storage_provider
6 changes: 1 addition & 5 deletions typeagent/storage/sqlite/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ def __init__(
conversation_id: str = "default",
message_type: type[TMessage] = None, # type: ignore
semantic_ref_type: type[interfaces.SemanticRef] = None, # type: ignore
conversation_index_settings=None,
message_text_index_settings: MessageTextIndexSettings | None = None,
related_term_index_settings: RelatedTermIndexSettings | None = None,
):
Expand All @@ -50,14 +49,11 @@ def __init__(
self.semantic_ref_type = semantic_ref_type

# Settings with defaults (require embedding settings)
self.conversation_index_settings = conversation_index_settings or {}
if message_text_index_settings is None:
# Create default embedding settings if not provided
from ...aitools.embeddings import AsyncEmbeddingModel
from ...aitools.vectorbase import TextEmbeddingIndexSettings

model = AsyncEmbeddingModel()
embedding_settings = TextEmbeddingIndexSettings(model)
embedding_settings = TextEmbeddingIndexSettings()
message_text_index_settings = MessageTextIndexSettings(embedding_settings)
self.message_text_index_settings = message_text_index_settings

Expand Down