TalkPipe 0.12.2__tar.gz → 0.12.3__tar.gz
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.
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.github/copilot-instructions.md +13 -1
- talkpipe-0.12.3/.github/prompts/add-segment.prompt.md +57 -0
- talkpipe-0.12.3/.github/prompts/changelog.prompt.md +23 -0
- talkpipe-0.12.3/.github/prompts/doc-examples.prompt.md +29 -0
- talkpipe-0.12.3/.github/prompts/tdd.prompt.md +21 -0
- talkpipe-0.12.3/.github/prompts/update-entry-points.prompt.md +26 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.github/workflows/ci-cd.yml +7 -7
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.vscode/settings.json +1 -2
- {talkpipe-0.12.2 → talkpipe-0.12.3}/CHANGELOG.md +82 -0
- {talkpipe-0.12.2/src/talkpipe.egg-info → talkpipe-0.12.3}/PKG-INFO +39 -14
- {talkpipe-0.12.2 → talkpipe-0.12.3}/README.md +37 -13
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/api-reference/talkpipe-plugin-manager.md +10 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/configuration.md +16 -10
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/extending-talkpipe.md +83 -3
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/guides/makevectordatabase-and-serverag.md +14 -5
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/guides/model-and-source-configuration.md +18 -19
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/guides/model2vec-embeddings.md +5 -2
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/quickstart.md +23 -3
- {talkpipe-0.12.2 → talkpipe-0.12.3}/pyproject.toml +3 -3
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/chatterlang_script.py +10 -2
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/makevectordatabase.py +27 -9
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/serverag.py +19 -5
- talkpipe-0.12.3/src/talkpipe/app/static/unit-docs.html +1 -0
- talkpipe-0.12.3/src/talkpipe/app/static/unit-docs.txt +1 -0
- talkpipe-0.12.3/src/talkpipe/app/talkpipe_plugin_manager.py +69 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/chatterlang/compiler.py +109 -7
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/chatterlang/registry.py +55 -4
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/html.py +11 -1
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/chat.py +3 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/config.py +3 -2
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/prompt_adapter_base.py +37 -2
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/prompt_adapters.py +2 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/prompt_adapters_anthropic.py +14 -2
- talkpipe-0.12.3/src/talkpipe/llm/prompt_adapters_eliza.py +334 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/prompt_adapters_ollama.py +24 -4
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/prompt_adapters_openai.py +3 -1
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipe/basic.py +12 -3
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipelines/vector_databases.py +1 -1
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/search/abstract.py +7 -2
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/config.py +45 -3
- {talkpipe-0.12.2 → talkpipe-0.12.3/src/talkpipe.egg-info}/PKG-INFO +39 -14
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe.egg-info/SOURCES.txt +10 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe.egg-info/requires.txt +1 -0
- talkpipe-0.12.3/src/talkpipe.egg-info/scm_file_list.json +265 -0
- talkpipe-0.12.3/src/talkpipe.egg-info/scm_version.json +8 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/app/test_talkpipe_plugin_manager.py +20 -10
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/chatterlang/test_compiler.py +37 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_html_exceptions.py +6 -5
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_prompt_adapters_base.py +10 -0
- talkpipe-0.12.3/tests/talkpipe/llm/test_prompt_adapters_eliza.py +111 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_prompt_adapters_ollama.py +23 -0
- talkpipe-0.12.3/uv.lock +3292 -0
- talkpipe-0.12.2/src/talkpipe/app/static/unit-docs.html +0 -1
- talkpipe-0.12.2/src/talkpipe/app/static/unit-docs.txt +0 -1
- talkpipe-0.12.2/src/talkpipe/app/talkpipe_plugin_manager.py +0 -43
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.bandit +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.cursor/skills/changelog-update/SKILL.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.cursor/skills/doc-example-formatting/SKILL.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.cursor/skills/run-documentation-examples/SKILL.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.cursor/skills/run-documentation-examples/scripts/run_documentation_examples.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.cursor/skills/test-driven-development/SKILL.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.cursor/skills/update-entry-points/SKILL.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.cursor/skills/update-entry-points/scripts/update_entry_points.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.dockerignore +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.github/CICD.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.github/ISSUE_TEMPLATE/release-checklist.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.github/SECURITY.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.github/dependabot.yml +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.gitignore +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.safety-policy.yml +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.safety-project.ini +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/.vscode/tasks.json +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/AGENTS.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/COPYRIGHT +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/Dockerfile +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/LICENSE +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/bin/config-analyzer.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/bin/config_bash +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/.gitignore +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/LLMChat.png +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/LLMEvaluateWebPage.png +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/README.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/TalkPipe.png +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/TalkPipe.xcf +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/api-reference/README.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/api-reference/chatterlang-script.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/api-reference/chatterlang-server.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/api-reference/chatterlang-workbench.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/api-reference/lazy-loading.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/api-reference/talkpipe-ref.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/README.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/chatterlang.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/documentation-formatting.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/metadata-stream.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/pipe-api.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/protocol.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/architecture/streaming.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/contributing/developer-handbook.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/guides/container-images.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/make_structure_diagram.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/structure.tex +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/talkpipe_architecture.png +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/talkpipe_architecture.tex +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/talkpipe_diagram.png +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/.gitignore +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/README.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/README.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/stories.json +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_1-Document_Indexing/story_search_ui.yml +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/README.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/step_3_extras.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/story_by_example_ui.yml +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/README.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.bat +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.script +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.sh +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/file_structure.md +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/multi_format_ui.yml +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/report_topic_ui.yml +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/step3_extras.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/step_1_extras.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/docs/tutorials/Tutorial_3_Report_Writing/step_2_extras.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/pytest.ini +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/scripts/extract_documentation_examples.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/setup.cfg +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/setup.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/chatterlang_generate_entry_points.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/chatterlang_reference_browser.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/chatterlang_reference_generator.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/chatterlang_serve.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/chatterlang_workbench.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/doc_examples.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/precache_model2vec.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/static/.gitignore +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/static/favicon.ico +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/app/static/talkpipe_logo.png +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/chatterlang/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/chatterlang/parsers.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/email.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/extraction.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/image.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/mongo.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/rss.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/text/chunking_units.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/text/englishnormalize.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/data/text/operations.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/content.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/embedding.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/embedding_adapters.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/embedding_adapters_model2vec.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/embedding_adapters_openai.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/embedding_errors.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/model2vec_embeddings.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/multimodal.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/prompt_adapter_memory.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/llm/vision.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/operations/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/operations/filtering.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/operations/matrices.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/operations/thread_ops.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/operations/transforms.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipe/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipe/core.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipe/fork.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipe/io.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipe/math.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipe/metadata.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipelines/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/pipelines/basic_rag.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/search/lancedb.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/search/whoosh.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/__init__.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/collections.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/constants.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/data_manipulation.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/doc_extraction.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/iterators.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/os.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe/util/plugin_loader.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe.egg-info/dependency_links.txt +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe.egg-info/entry_points.txt +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/src/talkpipe.egg-info/top_level.txt +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/stories.json +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/test-workflow.yml +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/conftest.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/prompt_adapter_contract_suite.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/app/test_chatterlang_generate_entry_points.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/app/test_chatterlang_reference_browser.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/app/test_chatterlang_reference_generator.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/app/test_chatterlang_script.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/app/test_chatterlang_serve.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/chatterlang/test_chatterlang_workbench.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/chatterlang/test_entry_points.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/chatterlang/test_parsers.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/chatterlang/test_registry.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/sample_feed.pkl +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test.docx +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_email.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_extraction.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_html.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_image.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_mogomock.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_mongo.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_mongo_integration.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/test_rss.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/text/test_chunking_units.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/text/test_englishnormalize.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/data/text/test_operations.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_chat.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_content.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_embedding.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_embedding_batch.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_embedding_model2vec.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_embedding_token_overflow.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_multimodal.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_prompt_adapters_anthropic.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_prompt_adapters_memory.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_prompt_adapters_openai.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_vision.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/llm/test_vision_adapters.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/operations/test_filtering.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/operations/test_matrices.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/operations/test_threading.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/operations/test_transforms.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/pipe/test_basic.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/pipe/test_core.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/pipe/test_fork.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/pipe/test_io.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/pipe/test_math.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/pipe/test_metadata.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/pipelines/test_basic_rag.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/pipelines/test_vector_databases.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/search/test_abstract.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/search/test_lancedb.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/search/test_lancedb_cache.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/search/test_whoosh.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/test_documentation_examples.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/util/test_collections.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/util/test_config.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/util/test_data_manipulation.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/util/test_doc_extraction.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/util/test_iterators.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/util/test_os.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/util/test_plugin_loader.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/talkpipe/util/test_util.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/test_doc_examples.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/test_security_vulnerabilities.py +0 -0
- {talkpipe-0.12.2 → talkpipe-0.12.3}/tests/testutils.py +0 -0
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# TalkPipe AI Coding Instructions
|
|
2
2
|
|
|
3
|
-
*Cursor users: See [AGENTS.md](../AGENTS.md) and `.cursor/skills/` for additional workflows
|
|
3
|
+
*Cursor users: See [AGENTS.md](../AGENTS.md) and `.cursor/skills/` for additional workflows.*
|
|
4
|
+
|
|
5
|
+
## Quick Actions (Prompts)
|
|
6
|
+
|
|
7
|
+
Use these slash commands in VS Code chat (type `/` to invoke):
|
|
8
|
+
|
|
9
|
+
| Prompt | When to use |
|
|
10
|
+
|--------|-------------|
|
|
11
|
+
| `/tdd` | Implement a change with write-fail-fix-pass TDD order |
|
|
12
|
+
| `/add-segment` | Add a new segment or source end-to-end (test → impl → entry-point → changelog) |
|
|
13
|
+
| `/changelog` | Update CHANGELOG.md after a feature or fix |
|
|
14
|
+
| `/update-entry-points` | Regenerate pyproject.toml entry points from decorators |
|
|
15
|
+
| `/doc-examples` | Validate and fix documentation code examples |
|
|
4
16
|
|
|
5
17
|
## Project Overview
|
|
6
18
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
mode: agent
|
|
3
|
+
description: Add a new segment or source to TalkPipe. Use when creating new pipe components. Covers decorator pattern, parameter annotations, entry-point registration, and TDD.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Add a new **$input** to TalkPipe following all project conventions:
|
|
7
|
+
|
|
8
|
+
## Step 1 — Write a failing test
|
|
9
|
+
|
|
10
|
+
In the appropriate file under `tests/talkpipe/`, write a test that fails without the new component. Run it to confirm failure:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
source .venv/bin/activate && pytest <test-file> -v
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Step 2 — Implement the component
|
|
17
|
+
|
|
18
|
+
Place it in the appropriate module under `src/talkpipe/`:
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
from typing import Annotated, Iterator, Any
|
|
22
|
+
from talkpipe.pipe.core import segment, field_segment
|
|
23
|
+
from talkpipe import register_segment # or register_source
|
|
24
|
+
|
|
25
|
+
@register_segment("mySegment") # camelCase name used in ChatterLang
|
|
26
|
+
@segment()
|
|
27
|
+
def my_segment(
|
|
28
|
+
items: Iterator[Any],
|
|
29
|
+
param: Annotated[str, "Description of this parameter"] = "default",
|
|
30
|
+
) -> Iterator[Any]:
|
|
31
|
+
for item in items:
|
|
32
|
+
yield item # process and yield
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Rules:
|
|
36
|
+
- Use `@segment()` for iterators; `@field_segment()` for per-field transforms
|
|
37
|
+
- Use `Annotated[type, "description"]` for every parameter (shown in ChatterLang reference)
|
|
38
|
+
- Do NOT add docstrings documenting parameters — use `Annotated` instead
|
|
39
|
+
- For `@field_segment`, the first non-items argument is the `field` parameter by convention
|
|
40
|
+
|
|
41
|
+
## Step 3 — Register entry point
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
.venv/bin/python .cursor/skills/update-entry-points/scripts/update_entry_points.py
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Verify the new entry appears in `pyproject.toml` under `[project.entry-points."talkpipe.segments"]` or `"talkpipe.sources"`.
|
|
48
|
+
|
|
49
|
+
## Step 4 — Verify test passes
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pytest <test-file> -v
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Step 5 — Update CHANGELOG.md
|
|
56
|
+
|
|
57
|
+
Add a bullet under `## Unreleased` describing the new component.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
mode: agent
|
|
3
|
+
description: Update CHANGELOG.md after implementing a feature, fixing a bug, or making any user-facing change. Handles update-vs-add logic correctly.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Update [CHANGELOG.md](../../CHANGELOG.md) under the `## Unreleased` section.
|
|
7
|
+
|
|
8
|
+
**Decision logic:**
|
|
9
|
+
1. Is this a **minor change to an existing feature** already mentioned in Unreleased?
|
|
10
|
+
- Yes → Update that existing bullet; do not add a new one
|
|
11
|
+
- No → Add a new bullet at the top of the Unreleased list
|
|
12
|
+
|
|
13
|
+
2. Is this **purely internal** (refactor, no user impact)?
|
|
14
|
+
- Yes → Changelog update optional
|
|
15
|
+
- No → Always update
|
|
16
|
+
|
|
17
|
+
**Format rules:**
|
|
18
|
+
- Present tense, sentence case
|
|
19
|
+
- Use backticks for segment/command names (e.g. `mySegment`, `run_doc_examples`)
|
|
20
|
+
- Link to docs with `[text](path)` when helpful
|
|
21
|
+
- Multi-line bullets use 2-space indent for continuation lines
|
|
22
|
+
|
|
23
|
+
The change to document: $input
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
mode: agent
|
|
3
|
+
description: Validate and fix documentation code examples. Use after editing docs, before committing doc changes, or when examples may be broken. Runs examples via pytest and fixes formatting issues.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Validate documentation code examples following TalkPipe conventions. See [docs/architecture/documentation-formatting.md](../../docs/architecture/documentation-formatting.md) for full formatting rules.
|
|
7
|
+
|
|
8
|
+
## Run examples via pytest
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
source .venv/bin/activate
|
|
12
|
+
pytest tests/test_doc_examples.py -v
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Skip Ollama-dependent examples when Ollama is unavailable:
|
|
16
|
+
```bash
|
|
17
|
+
pytest tests/test_doc_examples.py -v -m "not requires_ollama"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Formatting rules (fix any violations found)
|
|
21
|
+
|
|
22
|
+
- Use **unindented** ` ```python ` fences (no leading spaces before the triple backtick)
|
|
23
|
+
- Always include a language tag (` ```python ` or ` ```chatterlang `)
|
|
24
|
+
- Standalone examples must include all imports and be runnable in isolation
|
|
25
|
+
- Add `# skip-extract` as the first line of blocks that are intentionally non-runnable (fragments, setup code, external-service-only)
|
|
26
|
+
|
|
27
|
+
## Scope
|
|
28
|
+
|
|
29
|
+
$input
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
mode: agent
|
|
3
|
+
description: Follow TalkPipe TDD workflow. Use when implementing features, fixing bugs, or adding segments/sources. Enforces write-fail-fix-pass order.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Follow the TalkPipe TDD workflow for this change:
|
|
7
|
+
|
|
8
|
+
1. **Write or update a test** in `tests/` that fails without the change. Prefer updating an existing test file over creating a new one.
|
|
9
|
+
2. **Verify the test fails**: run `source .venv/bin/activate && pytest <test-file> -v`
|
|
10
|
+
3. **Implement the change**
|
|
11
|
+
4. **Verify the test passes**: re-run the same pytest command
|
|
12
|
+
|
|
13
|
+
Constraints:
|
|
14
|
+
- Tests mirror `src/` structure under `tests/talkpipe/`
|
|
15
|
+
- Keep tests as short as possible while covering the functionality completely
|
|
16
|
+
- Use `pytest.fixture` and `pytest-mock` for dependencies
|
|
17
|
+
- Always use the `.venv` environment; abort and alert if it doesn't exist
|
|
18
|
+
|
|
19
|
+
If a unit test is not reasonable (e.g., requires external LLM, is purely cosmetic), notify the user and explain why.
|
|
20
|
+
|
|
21
|
+
The change to implement: $input
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
mode: agent
|
|
3
|
+
description: Regenerate and apply talkpipe.sources and talkpipe.segments entry points from @register_source/@register_segment decorators. Use after adding new sources or segments, or when pyproject.toml entry points are out of sync.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Regenerate entry points from `@register_source` and `@register_segment` decorators and update `pyproject.toml`.
|
|
7
|
+
|
|
8
|
+
Run from the project root:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
source .venv/bin/activate
|
|
12
|
+
python .cursor/skills/update-entry-points/scripts/update_entry_points.py
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The script:
|
|
16
|
+
1. Scans `src/talkpipe/` for `@register_source` and `@register_segment` decorators
|
|
17
|
+
2. Generates updated entry-point TOML
|
|
18
|
+
3. Replaces `[project.entry-points."talkpipe.sources"]` and `[project.entry-points."talkpipe.segments"]` in `pyproject.toml`
|
|
19
|
+
4. Preserves all other `pyproject.toml` content
|
|
20
|
+
|
|
21
|
+
**Dry run** (preview without writing):
|
|
22
|
+
```bash
|
|
23
|
+
python .cursor/skills/update-entry-points/scripts/update_entry_points.py --dry-run
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
After running, verify the expected entry appears in `pyproject.toml`.
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
python-version: ['3.11', '3.12', '3.13']
|
|
21
21
|
|
|
22
22
|
steps:
|
|
23
|
-
- uses: actions/checkout@
|
|
23
|
+
- uses: actions/checkout@v7
|
|
24
24
|
with:
|
|
25
25
|
fetch-depth: 0
|
|
26
26
|
|
|
@@ -30,7 +30,7 @@ jobs:
|
|
|
30
30
|
python-version: ${{ matrix.python-version }}
|
|
31
31
|
|
|
32
32
|
- name: Cache pip dependencies
|
|
33
|
-
uses: actions/cache@
|
|
33
|
+
uses: actions/cache@v6
|
|
34
34
|
with:
|
|
35
35
|
path: ~/.cache/pip
|
|
36
36
|
key: ${{ runner.os }}-pip-${{ hashFiles('pyproject.toml') }}
|
|
@@ -48,7 +48,7 @@ jobs:
|
|
|
48
48
|
|
|
49
49
|
- name: Upload coverage to Codecov
|
|
50
50
|
if: matrix.python-version == '3.11'
|
|
51
|
-
uses: codecov/codecov-action@
|
|
51
|
+
uses: codecov/codecov-action@v7
|
|
52
52
|
with:
|
|
53
53
|
files: ./coverage.xml
|
|
54
54
|
flags: unittests
|
|
@@ -60,7 +60,7 @@ jobs:
|
|
|
60
60
|
SAFETY_API_KEY: ${{ secrets.SAFETY_API_KEY }}
|
|
61
61
|
|
|
62
62
|
steps:
|
|
63
|
-
- uses: actions/checkout@
|
|
63
|
+
- uses: actions/checkout@v7
|
|
64
64
|
with:
|
|
65
65
|
fetch-depth: 0
|
|
66
66
|
|
|
@@ -104,7 +104,7 @@ jobs:
|
|
|
104
104
|
|
|
105
105
|
steps:
|
|
106
106
|
- name: Checkout repository
|
|
107
|
-
uses: actions/checkout@
|
|
107
|
+
uses: actions/checkout@v7
|
|
108
108
|
|
|
109
109
|
- name: Log in to Container Registry
|
|
110
110
|
uses: docker/login-action@v4
|
|
@@ -177,7 +177,7 @@ jobs:
|
|
|
177
177
|
|
|
178
178
|
steps:
|
|
179
179
|
- name: Checkout repository
|
|
180
|
-
uses: actions/checkout@
|
|
180
|
+
uses: actions/checkout@v7
|
|
181
181
|
|
|
182
182
|
- name: Initialize CodeQL
|
|
183
183
|
uses: github/codeql-action/init@v4
|
|
@@ -196,7 +196,7 @@ jobs:
|
|
|
196
196
|
if: github.event_name == 'release' && github.event.action == 'published'
|
|
197
197
|
|
|
198
198
|
steps:
|
|
199
|
-
- uses: actions/checkout@
|
|
199
|
+
- uses: actions/checkout@v7
|
|
200
200
|
with:
|
|
201
201
|
fetch-depth: 0
|
|
202
202
|
|
|
@@ -2,6 +2,88 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.12.3
|
|
6
|
+
|
|
7
|
+
- Fixed several doc-accuracy and rough-edge issues found during usability testing:
|
|
8
|
+
- `docs/architecture/configuration.md`'s example TOML named a dead `ollama_base_url` key;
|
|
9
|
+
it now shows the real `OLLAMA_SERVER_URL` key used by the README and code.
|
|
10
|
+
- `OllamaPromptAdapter` now catches connection failures and re-raises with the server URL
|
|
11
|
+
it tried and a pointer to `TALKPIPE_OLLAMA_SERVER_URL`, instead of a generic SDK error.
|
|
12
|
+
- `serverag` resolved `--embedding_*`/`--completion_*` defaults from the wrong config keys
|
|
13
|
+
(silently always falling through) and only validated provider config on the first query.
|
|
14
|
+
It now resolves the correct keys and builds the pipeline once at startup so a bad or
|
|
15
|
+
missing embedding/completion model or source fails immediately with an actionable error;
|
|
16
|
+
`quickstart.md`'s RAG example now includes the required completion flags.
|
|
17
|
+
- `extending-talkpipe.md`'s third-party plugin snippet registered a source under the
|
|
18
|
+
`talkpipe.segments` entry-point group instead of `talkpipe.sources`; fixed, and added a
|
|
19
|
+
complete end-to-end plugin example (package layout, `components.py`, `pyproject.toml`,
|
|
20
|
+
usage).
|
|
21
|
+
- `talkpipe_plugins --list` only reported the `talkpipe.plugins` entry-point group, so
|
|
22
|
+
components registered via `talkpipe.segments` / `talkpipe.sources` (the pattern most
|
|
23
|
+
third-party plugins use) were invisible even when working correctly. It now lists those
|
|
24
|
+
too.
|
|
25
|
+
- `makevectordatabase` now prints a completion summary (chunk count, output path, table,
|
|
26
|
+
embedding model/source) instead of exiting silently.
|
|
27
|
+
- `SearchResult.prompt_worthy_string` no longer surfaces internal underscore-prefixed
|
|
28
|
+
fields (e.g. the auto-generated `_doc_id`) to the LLM, so RAG answers over string-indexed
|
|
29
|
+
documents (no `title`/`source` field) don't cite a bare UUID.
|
|
30
|
+
- The misspelled segment aliases `addToLancDB` / `searchLancDB` remain functional for
|
|
31
|
+
backward compatibility but are now hidden from `available_names` (compiler error
|
|
32
|
+
suggestions) and `talkpipe_plugins --list` via a new `DEPRECATED_ALIASES` set in the
|
|
33
|
+
registry, so newcomers aren't shown two spellings with no indication which is canonical.
|
|
34
|
+
- Documented that `embedding_source="model2vec"` downloads the model from Hugging Face on
|
|
35
|
+
first use (cached after that); README tip and the model2vec guide now call this out.
|
|
36
|
+
- Fixed a data-corruption bug in `makevectordatabase`'s document pipeline: `ProcessDocumentsSegment`
|
|
37
|
+
shingled chunks across file boundaries (no per-document grouping), so two small input files could
|
|
38
|
+
be merged into a single indexed row with the content of both but the source/title of only the last
|
|
39
|
+
one, and RAG citations would then point at the wrong file. `ShingleText` is now grouped by `source`
|
|
40
|
+
so shingles never cross a file boundary.
|
|
41
|
+
- Fixed config key lookups being case-sensitive despite mixed casing conventions across the codebase
|
|
42
|
+
(`OLLAMA_SERVER_URL` vs. `default_model_name`, etc.): `TALKPIPE_*` environment variables now match
|
|
43
|
+
TOML config keys case-insensitively, so `TALKPIPE_default_model_name` and
|
|
44
|
+
`TALKPIPE_DEFAULT_MODEL_NAME` both work. Corrected config key names that had drifted from the
|
|
45
|
+
code in `configuration.md`, `model-and-source-configuration.md` (removed a fictional `DEFAULT_*`
|
|
46
|
+
key layer for `serverag`/`makevectordatabase` that doesn't exist), and
|
|
47
|
+
`makevectordatabase-and-serverag.md`.
|
|
48
|
+
- Fixed a self-contradictory compiler error: a segment/source declared via a `talkpipe.segments` /
|
|
49
|
+
`talkpipe.sources` entry point that failed to import was reported as simply "not found," with a
|
|
50
|
+
"did you mean" suggestion pointing at the very name that just failed. `HybridRegistry` now
|
|
51
|
+
captures the underlying import error and the compiler reports it directly (e.g. "was declared by
|
|
52
|
+
a plugin but failed to load: `<error>`") instead of suggesting the broken name as its own fix.
|
|
53
|
+
Also invalidate import caches before entry-point discovery to reduce staleness right after an
|
|
54
|
+
editable install.
|
|
55
|
+
- `chatterlang_script` now catches `CompileError` and prints just the error message instead of a
|
|
56
|
+
full Python traceback; pass `--verbose` to see the traceback for debugging.
|
|
57
|
+
- Ollama "model not found" (404) responses are now wrapped with an actionable message suggesting
|
|
58
|
+
`ollama pull <model>`, matching the existing treatment of connection errors.
|
|
59
|
+
- `talkpipe_plugins` with no arguments now defaults to `--list` instead of silently printing
|
|
60
|
+
nothing.
|
|
61
|
+
- Missing `robots.txt` (404) now logs at debug/info instead of warning, since it's a normal,
|
|
62
|
+
expected condition, not an error.
|
|
63
|
+
- `LlmBinaryAnswer.Answer` (used by `ragToBinaryAnswer` / `llmBinaryAnswer`) now has a friendly
|
|
64
|
+
`__str__` ("Yes: ..." / "No: ...") instead of printing as a raw Pydantic repr.
|
|
65
|
+
- README: added a concrete example value for `TALKPIPE_OLLAMA_SERVER_URL`, and labeled Example 4's
|
|
66
|
+
sample scored output as illustrative/model-dependent (LLM scores vary by model and run).
|
|
67
|
+
- Fixed `OllamaPromptAdapter.is_available()` checking the wrong server: it called the `ollama`
|
|
68
|
+
package's module-level `ollama.chat()`, which always targets a `Client` instance created once at
|
|
69
|
+
`import ollama` time (defaulting to `http://127.0.0.1:11434` unless `OLLAMA_HOST` happened to be
|
|
70
|
+
set at that moment) and never re-reads any env var afterward. This ignored TalkPipe's own
|
|
71
|
+
`server_url` / `OLLAMA_SERVER_URL` config entirely, so on machines running a local Ollama without
|
|
72
|
+
the configured model (but with a working remote Ollama server configured), `is_available()` — and
|
|
73
|
+
therefore the `requires_ollama` test fixture and any code checking availability — would report the
|
|
74
|
+
model unavailable even though it was reachable and correctly used everywhere else. It now routes
|
|
75
|
+
through the same `_chat_completion()` helper `execute()` uses, which builds an `ollama.Client`
|
|
76
|
+
pointed at the configured server.
|
|
77
|
+
- Added a local `eliza` prompt-adapter source for `llmPrompt` and guided-generation
|
|
78
|
+
segments. The adapter is deterministic (no external API keys), uses the configured
|
|
79
|
+
model name as ELIZA's self-reference, supports multi-turn memory/fact callbacks,
|
|
80
|
+
and provides generic structured outputs for score/binary/term extraction schemas.
|
|
81
|
+
Added a matching ChatterLang example to model/source configuration docs.
|
|
82
|
+
- Fixed single-turn (`multi_turn=False`) prompt-adapter state handling so `_summary_message`
|
|
83
|
+
is cleared after each response and does not leak conversation memory between calls.
|
|
84
|
+
- Fixed a CI import failure in `talkpipe.chatterlang.registry` by importing `List`
|
|
85
|
+
for the `available_names` return annotation, preventing `NameError` during module import.
|
|
86
|
+
|
|
5
87
|
## v0.12.2
|
|
6
88
|
- Added batch embedding support: embedding adapters expose `execute_one` and `execute_batch`;
|
|
7
89
|
`execute` remains as a deprecated alias for `execute_one` (removed in 1.0). `llmEmbed` extends
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: talkpipe
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.3
|
|
4
4
|
Summary: Python internal and external DSL for writing generative AI analytics
|
|
5
5
|
Author-email: Travis Bauer <tlbauer@sandia.gov>
|
|
6
6
|
Maintainer-email: Travis Bauer <tlbauer@sandia.gov>
|
|
@@ -36,6 +36,7 @@ Requires-Dist: pyyaml
|
|
|
36
36
|
Requires-Dist: greenlet
|
|
37
37
|
Requires-Dist: networkx
|
|
38
38
|
Requires-Dist: starlette>=0.49.1
|
|
39
|
+
Requires-Dist: build>=1.5.0
|
|
39
40
|
Provides-Extra: dev
|
|
40
41
|
Requires-Dist: pytest; extra == "dev"
|
|
41
42
|
Requires-Dist: pytest-mock; extra == "dev"
|
|
@@ -79,7 +80,7 @@ This README is a high-level overview. Use the **[documentation map](#documentati
|
|
|
79
80
|
|
|
80
81
|
## What Can You Do With TalkPipe?
|
|
81
82
|
|
|
82
|
-
- **Chat with LLMs** - Create multi-turn conversations with OpenAI, Ollama, or Anthropic models in just
|
|
83
|
+
- **Chat with LLMs** - Create multi-turn conversations with OpenAI, Ollama, or Anthropic models in just a few lines of code
|
|
83
84
|
- **Process Documents** - Extract text from PDFs, analyze research papers, score content relevance
|
|
84
85
|
- **Build RAG Pipelines** - Create end-to-end Retrieval-Augmented Generation workflows with vector databases
|
|
85
86
|
- **Analyze Web Content** - Download web pages (respecting robots.txt), extract readable text, and summarize
|
|
@@ -128,7 +129,7 @@ These applications are entry points for different usage scenarios, from interact
|
|
|
128
129
|
|
|
129
130
|
## Quick Start
|
|
130
131
|
|
|
131
|
-
**Requirements:** Python 3.11 or newer.
|
|
132
|
+
**Requirements:** Python 3.11 or newer. Check your version first with `python3 --version` — it must report 3.11 or higher before installing.
|
|
132
133
|
|
|
133
134
|
```bash
|
|
134
135
|
pip install talkpipe
|
|
@@ -144,14 +145,34 @@ pip install talkpipe[model2vec] # In-process static embeddings (also in [all])
|
|
|
144
145
|
# Or: pip install talkpipe[all]
|
|
145
146
|
```
|
|
146
147
|
|
|
147
|
-
Configure API keys and provider URLs via environment variables (for example `
|
|
148
|
+
Configure API keys and provider URLs via environment variables (for example `OPENAI_API_KEY` and `ANTHROPIC_API_KEY`) or `~/.talkpipe.toml`. If TalkPipe runs on a different machine than your Ollama server, set `TALKPIPE_OLLAMA_SERVER_URL` to that host, e.g. `export TALKPIPE_OLLAMA_SERVER_URL="http://192.168.1.50:11434"` (a bare host/IP with no scheme or port, like `"192.168.1.50"`, also works). See **[Configuration](docs/architecture/configuration.md)** for details and ChatterLang `$var` substitution.
|
|
148
149
|
|
|
149
|
-
|
|
150
|
+
Hello world (no LLM server required):
|
|
151
|
+
|
|
152
|
+
> **Note:** `source="eliza"` is **not** an LLM provider. It is a local, deterministic adapter for experimenting with TalkPipe/ChatterLang syntax and multi-turn flow when you do not yet have Ollama/OpenAI/Anthropic access.
|
|
153
|
+
|
|
154
|
+
```python
|
|
155
|
+
from talkpipe.chatterlang import compiler
|
|
156
|
+
|
|
157
|
+
script = '| print | llmPrompt[model="Dr. Eliza", source="eliza", multi_turn=True] | print'
|
|
158
|
+
chat = compiler.compile(script).as_function(single_in=True, single_out=True)
|
|
159
|
+
|
|
160
|
+
chat("Hello, my name is Alice.")
|
|
161
|
+
chat("What's my name?")
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
> **Tip:** `from talkpipe.chatterlang import compile` is equivalent to the `compiler.compile(...)` style above — both styles work throughout the docs.
|
|
165
|
+
|
|
166
|
+
Multi-turn chat (requires a local model server):
|
|
167
|
+
|
|
168
|
+
> **Prerequisite:** this example uses Ollama, a separate application (not just the `talkpipe[ollama]` Python package). Install and start it from https://ollama.com/download, then pull the model with `ollama pull llama3.2`. Cloud users can skip Ollama and substitute `source="openai"` or `source="anthropic"` (see the commented variants below).
|
|
150
169
|
|
|
151
170
|
```python
|
|
152
171
|
from talkpipe.chatterlang import compiler
|
|
153
172
|
|
|
154
173
|
script = '| print | llmPrompt[model="llama3.2", source="ollama", multi_turn=True] | print'
|
|
174
|
+
# Using OpenAI: model="gpt-4o-mini", source="openai" (set OPENAI_API_KEY)
|
|
175
|
+
# Using Anthropic: model="claude-haiku-4-5", source="anthropic" (set ANTHROPIC_API_KEY)
|
|
155
176
|
chat = compiler.compile(script).as_function(single_in=True, single_out=True)
|
|
156
177
|
|
|
157
178
|
response = chat("Hello! My name is Alice.")
|
|
@@ -177,6 +198,8 @@ rag = compiler.compile(
|
|
|
177
198
|
rag("What is TalkPipe?")
|
|
178
199
|
```
|
|
179
200
|
|
|
201
|
+
> **No Ollama server?** Swap `embedding_source="model2vec"` and `embedding_model="minishlab/potion-base-8M"` for offline embeddings (included in `talkpipe[all]`). The first run downloads the model from Hugging Face (a few files, ~30 MB); after that it's cached and needs no network — see [Precache for offline use](docs/guides/model2vec-embeddings.md#precache-for-offline-use) to pre-download for air-gapped environments. Note: the `ragToText` completion step still requires an LLM provider. See the [model2vec guide](docs/guides/model2vec-embeddings.md).
|
|
202
|
+
|
|
180
203
|
# Core Components
|
|
181
204
|
|
|
182
205
|
## 1. The Pipe API (Internal DSL)
|
|
@@ -410,7 +433,9 @@ CONST iot_prompt = "Rate 0-10 how relevant this is to IoT researchers. Consider
|
|
|
410
433
|
evaluator = compiler.compile(script).as_function(single_in=False, single_out=False)
|
|
411
434
|
results = evaluator(articles)
|
|
412
435
|
|
|
413
|
-
# Output shows only relevant articles with their scores
|
|
436
|
+
# Output shows only relevant articles with their scores. Scores are assigned by the
|
|
437
|
+
# LLM, so they (and which rows survive the >6 filter) vary by model and run; with
|
|
438
|
+
# some models only one or two of the four articles may pass. Illustrative example:
|
|
414
439
|
# {'title': 'New LLM Model Released', 'ai_score': 9, 'iot_score': 2, 'max_score': 9}
|
|
415
440
|
# {'title': 'Smart Home IoT Devices', 'ai_score': 3, 'iot_score': 9, 'max_score': 9}
|
|
416
441
|
# {'title': 'RAG Systems in Production', 'ai_score': 8, 'iot_score': 2, 'max_score': 8}
|
|
@@ -581,7 +606,7 @@ smtp_port = 587
|
|
|
581
606
|
Environment variables use the `TALKPIPE_` prefix:
|
|
582
607
|
```bash
|
|
583
608
|
export TALKPIPE_email_password="your-password"
|
|
584
|
-
export
|
|
609
|
+
export OPENAI_API_KEY="sk-..."
|
|
585
610
|
```
|
|
586
611
|
|
|
587
612
|
### Performance Optimization
|
|
@@ -638,17 +663,17 @@ def multiplyBy(items, factor=2):
|
|
|
638
663
|
for item in items:
|
|
639
664
|
yield item * factor
|
|
640
665
|
|
|
641
|
-
# Use it to
|
|
666
|
+
# Use it to multiply each value in the range by 3
|
|
642
667
|
pipeline = arange(lower=5, upper=10) | multiplyBy(factor=3) | io.Print()
|
|
643
668
|
result = pipeline.as_function(single_out=False)()
|
|
644
669
|
|
|
645
670
|
# Output:
|
|
646
|
-
#
|
|
647
|
-
#
|
|
648
|
-
#
|
|
649
|
-
#
|
|
650
|
-
#
|
|
651
|
-
# Returns: [
|
|
671
|
+
# 15
|
|
672
|
+
# 18
|
|
673
|
+
# 21
|
|
674
|
+
# 24
|
|
675
|
+
# 27
|
|
676
|
+
# Returns: [15, 18, 21, 24, 27]
|
|
652
677
|
```
|
|
653
678
|
|
|
654
679
|
**Field Segments** provide a convenient way to create 1:1 segments:
|
|
@@ -20,7 +20,7 @@ This README is a high-level overview. Use the **[documentation map](#documentati
|
|
|
20
20
|
|
|
21
21
|
## What Can You Do With TalkPipe?
|
|
22
22
|
|
|
23
|
-
- **Chat with LLMs** - Create multi-turn conversations with OpenAI, Ollama, or Anthropic models in just
|
|
23
|
+
- **Chat with LLMs** - Create multi-turn conversations with OpenAI, Ollama, or Anthropic models in just a few lines of code
|
|
24
24
|
- **Process Documents** - Extract text from PDFs, analyze research papers, score content relevance
|
|
25
25
|
- **Build RAG Pipelines** - Create end-to-end Retrieval-Augmented Generation workflows with vector databases
|
|
26
26
|
- **Analyze Web Content** - Download web pages (respecting robots.txt), extract readable text, and summarize
|
|
@@ -69,7 +69,7 @@ These applications are entry points for different usage scenarios, from interact
|
|
|
69
69
|
|
|
70
70
|
## Quick Start
|
|
71
71
|
|
|
72
|
-
**Requirements:** Python 3.11 or newer.
|
|
72
|
+
**Requirements:** Python 3.11 or newer. Check your version first with `python3 --version` — it must report 3.11 or higher before installing.
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
pip install talkpipe
|
|
@@ -85,14 +85,34 @@ pip install talkpipe[model2vec] # In-process static embeddings (also in [all])
|
|
|
85
85
|
# Or: pip install talkpipe[all]
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
Configure API keys and provider URLs via environment variables (for example `
|
|
88
|
+
Configure API keys and provider URLs via environment variables (for example `OPENAI_API_KEY` and `ANTHROPIC_API_KEY`) or `~/.talkpipe.toml`. If TalkPipe runs on a different machine than your Ollama server, set `TALKPIPE_OLLAMA_SERVER_URL` to that host, e.g. `export TALKPIPE_OLLAMA_SERVER_URL="http://192.168.1.50:11434"` (a bare host/IP with no scheme or port, like `"192.168.1.50"`, also works). See **[Configuration](docs/architecture/configuration.md)** for details and ChatterLang `$var` substitution.
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
Hello world (no LLM server required):
|
|
91
|
+
|
|
92
|
+
> **Note:** `source="eliza"` is **not** an LLM provider. It is a local, deterministic adapter for experimenting with TalkPipe/ChatterLang syntax and multi-turn flow when you do not yet have Ollama/OpenAI/Anthropic access.
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
from talkpipe.chatterlang import compiler
|
|
96
|
+
|
|
97
|
+
script = '| print | llmPrompt[model="Dr. Eliza", source="eliza", multi_turn=True] | print'
|
|
98
|
+
chat = compiler.compile(script).as_function(single_in=True, single_out=True)
|
|
99
|
+
|
|
100
|
+
chat("Hello, my name is Alice.")
|
|
101
|
+
chat("What's my name?")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
> **Tip:** `from talkpipe.chatterlang import compile` is equivalent to the `compiler.compile(...)` style above — both styles work throughout the docs.
|
|
105
|
+
|
|
106
|
+
Multi-turn chat (requires a local model server):
|
|
107
|
+
|
|
108
|
+
> **Prerequisite:** this example uses Ollama, a separate application (not just the `talkpipe[ollama]` Python package). Install and start it from https://ollama.com/download, then pull the model with `ollama pull llama3.2`. Cloud users can skip Ollama and substitute `source="openai"` or `source="anthropic"` (see the commented variants below).
|
|
91
109
|
|
|
92
110
|
```python
|
|
93
111
|
from talkpipe.chatterlang import compiler
|
|
94
112
|
|
|
95
113
|
script = '| print | llmPrompt[model="llama3.2", source="ollama", multi_turn=True] | print'
|
|
114
|
+
# Using OpenAI: model="gpt-4o-mini", source="openai" (set OPENAI_API_KEY)
|
|
115
|
+
# Using Anthropic: model="claude-haiku-4-5", source="anthropic" (set ANTHROPIC_API_KEY)
|
|
96
116
|
chat = compiler.compile(script).as_function(single_in=True, single_out=True)
|
|
97
117
|
|
|
98
118
|
response = chat("Hello! My name is Alice.")
|
|
@@ -118,6 +138,8 @@ rag = compiler.compile(
|
|
|
118
138
|
rag("What is TalkPipe?")
|
|
119
139
|
```
|
|
120
140
|
|
|
141
|
+
> **No Ollama server?** Swap `embedding_source="model2vec"` and `embedding_model="minishlab/potion-base-8M"` for offline embeddings (included in `talkpipe[all]`). The first run downloads the model from Hugging Face (a few files, ~30 MB); after that it's cached and needs no network — see [Precache for offline use](docs/guides/model2vec-embeddings.md#precache-for-offline-use) to pre-download for air-gapped environments. Note: the `ragToText` completion step still requires an LLM provider. See the [model2vec guide](docs/guides/model2vec-embeddings.md).
|
|
142
|
+
|
|
121
143
|
# Core Components
|
|
122
144
|
|
|
123
145
|
## 1. The Pipe API (Internal DSL)
|
|
@@ -351,7 +373,9 @@ CONST iot_prompt = "Rate 0-10 how relevant this is to IoT researchers. Consider
|
|
|
351
373
|
evaluator = compiler.compile(script).as_function(single_in=False, single_out=False)
|
|
352
374
|
results = evaluator(articles)
|
|
353
375
|
|
|
354
|
-
# Output shows only relevant articles with their scores
|
|
376
|
+
# Output shows only relevant articles with their scores. Scores are assigned by the
|
|
377
|
+
# LLM, so they (and which rows survive the >6 filter) vary by model and run; with
|
|
378
|
+
# some models only one or two of the four articles may pass. Illustrative example:
|
|
355
379
|
# {'title': 'New LLM Model Released', 'ai_score': 9, 'iot_score': 2, 'max_score': 9}
|
|
356
380
|
# {'title': 'Smart Home IoT Devices', 'ai_score': 3, 'iot_score': 9, 'max_score': 9}
|
|
357
381
|
# {'title': 'RAG Systems in Production', 'ai_score': 8, 'iot_score': 2, 'max_score': 8}
|
|
@@ -522,7 +546,7 @@ smtp_port = 587
|
|
|
522
546
|
Environment variables use the `TALKPIPE_` prefix:
|
|
523
547
|
```bash
|
|
524
548
|
export TALKPIPE_email_password="your-password"
|
|
525
|
-
export
|
|
549
|
+
export OPENAI_API_KEY="sk-..."
|
|
526
550
|
```
|
|
527
551
|
|
|
528
552
|
### Performance Optimization
|
|
@@ -579,17 +603,17 @@ def multiplyBy(items, factor=2):
|
|
|
579
603
|
for item in items:
|
|
580
604
|
yield item * factor
|
|
581
605
|
|
|
582
|
-
# Use it to
|
|
606
|
+
# Use it to multiply each value in the range by 3
|
|
583
607
|
pipeline = arange(lower=5, upper=10) | multiplyBy(factor=3) | io.Print()
|
|
584
608
|
result = pipeline.as_function(single_out=False)()
|
|
585
609
|
|
|
586
610
|
# Output:
|
|
587
|
-
#
|
|
588
|
-
#
|
|
589
|
-
#
|
|
590
|
-
#
|
|
591
|
-
#
|
|
592
|
-
# Returns: [
|
|
611
|
+
# 15
|
|
612
|
+
# 18
|
|
613
|
+
# 21
|
|
614
|
+
# 24
|
|
615
|
+
# 27
|
|
616
|
+
# Returns: [15, 18, 21, 24, 27]
|
|
593
617
|
```
|
|
594
618
|
|
|
595
619
|
**Field Segments** provide a convenient way to create 1:1 segments:
|
|
@@ -33,8 +33,18 @@ Loaded plugins (2):
|
|
|
33
33
|
|
|
34
34
|
Failed plugins (1):
|
|
35
35
|
✗ broken-plugin
|
|
36
|
+
|
|
37
|
+
Segments registered via 'talkpipe.segments' entry points (98):
|
|
38
|
+
addToLanceDB -> talkpipe.search.lancedb:add_to_lancedb
|
|
39
|
+
...
|
|
40
|
+
|
|
41
|
+
Sources registered via 'talkpipe.sources' entry points (9):
|
|
42
|
+
greetings -> mytp.components:greetings
|
|
43
|
+
...
|
|
36
44
|
```
|
|
37
45
|
|
|
46
|
+
"Loaded plugins" only covers the whole-module `talkpipe.plugins` entry point group (see [Plugin Discovery](#plugin-discovery) below). If you registered components directly via the `talkpipe.segments` / `talkpipe.sources` entry point groups instead (the pattern most third-party plugins use — see [Extending TalkPipe](../architecture/extending-talkpipe.md#entry-points-for-distributable-components)), they show up here rather than under "Loaded plugins". This is the way to confirm your installed component is discoverable without having to run a pipeline that uses it.
|
|
47
|
+
|
|
38
48
|
### Reload a Plugin
|
|
39
49
|
|
|
40
50
|
Reload a specific plugin by name (useful during development):
|