TalkPipe 0.9.2__tar.gz → 0.9.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.
Files changed (180) hide show
  1. {talkpipe-0.9.2 → talkpipe-0.9.3}/CHANGELOG.md +9 -0
  2. {talkpipe-0.9.2 → talkpipe-0.9.3}/Dockerfile +4 -3
  3. {talkpipe-0.9.2 → talkpipe-0.9.3}/PKG-INFO +1 -1
  4. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/api-reference/talkpipe-plugin-manager.md +33 -20
  5. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_1-Document_Indexing/README.md +34 -28
  6. talkpipe-0.9.2/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.script +7 -11
  7. talkpipe-0.9.3/docs/tutorials/Tutorial_1-Document_Indexing/Step_1_CreateSyntheticData.sh +2 -0
  8. talkpipe-0.9.2/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.script +6 -11
  9. talkpipe-0.9.3/docs/tutorials/Tutorial_1-Document_Indexing/Step_2_IndexStories.sh +2 -0
  10. talkpipe-0.9.2/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.script +2 -5
  11. talkpipe-0.9.3/docs/tutorials/Tutorial_1-Document_Indexing/Step_3_SearchStories.sh +2 -0
  12. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/README.md +44 -32
  13. talkpipe-0.9.2/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.script +5 -9
  14. talkpipe-0.9.3/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_1_CreateVectorDatabase.sh +2 -0
  15. talkpipe-0.9.2/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.script +5 -9
  16. talkpipe-0.9.3/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_2_SearchByExample.sh +2 -0
  17. talkpipe-0.9.2/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.script +7 -11
  18. talkpipe-0.9.3/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/Step_3_SpecializedRag.sh +2 -0
  19. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_3_Report_Writing/README.md +37 -31
  20. talkpipe-0.9.2/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.script +6 -10
  21. talkpipe-0.9.3/docs/tutorials/Tutorial_3_Report_Writing/Step_1_ExecutiveSummaryGeneration.sh +2 -0
  22. talkpipe-0.9.2/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.script +6 -10
  23. talkpipe-0.9.3/docs/tutorials/Tutorial_3_Report_Writing/Step_2_DetailedAnalysisReportGeneration.sh +2 -0
  24. talkpipe-0.9.2/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.sh → talkpipe-0.9.3/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.script +5 -9
  25. talkpipe-0.9.3/docs/tutorials/Tutorial_3_Report_Writing/Step_3_MultiFormatReportGeneration.sh +2 -0
  26. {talkpipe-0.9.2 → talkpipe-0.9.3}/pyproject.toml +0 -1
  27. talkpipe-0.9.3/src/talkpipe/app/static/unit-docs.html +1 -0
  28. talkpipe-0.9.3/src/talkpipe/app/static/unit-docs.txt +1 -0
  29. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/data/html.py +2 -2
  30. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe.egg-info/PKG-INFO +1 -1
  31. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe.egg-info/SOURCES.txt +9 -0
  32. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe.egg-info/entry_points.txt +0 -1
  33. talkpipe-0.9.2/src/talkpipe/app/static/unit-docs.html +0 -1
  34. talkpipe-0.9.2/src/talkpipe/app/static/unit-docs.txt +0 -1
  35. {talkpipe-0.9.2 → talkpipe-0.9.3}/.bandit +0 -0
  36. {talkpipe-0.9.2 → talkpipe-0.9.3}/.dockerignore +0 -0
  37. {talkpipe-0.9.2 → talkpipe-0.9.3}/.github/CICD.md +0 -0
  38. {talkpipe-0.9.2 → talkpipe-0.9.3}/.github/ISSUE_TEMPLATE/release-checklist.md +0 -0
  39. {talkpipe-0.9.2 → talkpipe-0.9.3}/.github/SECURITY.md +0 -0
  40. {talkpipe-0.9.2 → talkpipe-0.9.3}/.github/dependabot.yml +0 -0
  41. {talkpipe-0.9.2 → talkpipe-0.9.3}/.github/workflows/ci-cd.yml +0 -0
  42. {talkpipe-0.9.2 → talkpipe-0.9.3}/.gitignore +0 -0
  43. {talkpipe-0.9.2 → talkpipe-0.9.3}/.safety-project.ini +0 -0
  44. {talkpipe-0.9.2 → talkpipe-0.9.3}/.vscode/settings.json +0 -0
  45. {talkpipe-0.9.2 → talkpipe-0.9.3}/.vscode/tasks.json +0 -0
  46. {talkpipe-0.9.2 → talkpipe-0.9.3}/CLAUDE.md +0 -0
  47. {talkpipe-0.9.2 → talkpipe-0.9.3}/COPYRIGHT +0 -0
  48. {talkpipe-0.9.2 → talkpipe-0.9.3}/LICENSE +0 -0
  49. {talkpipe-0.9.2 → talkpipe-0.9.3}/README.md +0 -0
  50. {talkpipe-0.9.2 → talkpipe-0.9.3}/bin/config-analyzer.py +0 -0
  51. {talkpipe-0.9.2 → talkpipe-0.9.3}/bin/config_bash +0 -0
  52. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/.gitignore +0 -0
  53. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/LLMChat.png +0 -0
  54. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/LLMEvaluateWebPage.png +0 -0
  55. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/README.md +0 -0
  56. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/TalkPipe.png +0 -0
  57. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/TalkPipe.xcf +0 -0
  58. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/api-reference/README.md +0 -0
  59. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/api-reference/chatterlang-script.md +0 -0
  60. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/api-reference/chatterlang-server.md +0 -0
  61. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/api-reference/chatterlang-workbench.md +0 -0
  62. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/api-reference/talkpipe-ref.md +0 -0
  63. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/architecture/README.md +0 -0
  64. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/architecture/chatterlang.md +0 -0
  65. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/architecture/configuration.md +0 -0
  66. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/architecture/extending-talkpipe.md +0 -0
  67. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/architecture/pipe-api.md +0 -0
  68. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/architecture/streaming.md +0 -0
  69. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/make_structure_diagram.sh +0 -0
  70. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/quickstart.md +0 -0
  71. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/structure.tex +0 -0
  72. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/talkpipe_diagram.png +0 -0
  73. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/.gitignore +0 -0
  74. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/README.md +0 -0
  75. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_1-Document_Indexing/stories.json +0 -0
  76. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_1-Document_Indexing/story_search_ui.yml +0 -0
  77. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/step_3_extras.py +0 -0
  78. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_2-Search_by_Example_and_RAG/story_by_example_ui.yml +0 -0
  79. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_3_Report_Writing/file_structure.md +0 -0
  80. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_3_Report_Writing/multi_format_ui.yml +0 -0
  81. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_3_Report_Writing/report_topic_ui.yml +0 -0
  82. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_3_Report_Writing/step3_extras.py +0 -0
  83. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_3_Report_Writing/step_1_extras.py +0 -0
  84. {talkpipe-0.9.2 → talkpipe-0.9.3}/docs/tutorials/Tutorial_3_Report_Writing/step_2_extras.py +0 -0
  85. {talkpipe-0.9.2 → talkpipe-0.9.3}/pytest.ini +0 -0
  86. {talkpipe-0.9.2 → talkpipe-0.9.3}/setup.cfg +0 -0
  87. {talkpipe-0.9.2 → talkpipe-0.9.3}/setup.py +0 -0
  88. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/__init__.py +0 -0
  89. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/__init__.py +0 -0
  90. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/chatterlang_reference_browser.py +0 -0
  91. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/chatterlang_reference_generator.py +0 -0
  92. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/chatterlang_script.py +0 -0
  93. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/chatterlang_serve.py +0 -0
  94. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/chatterlang_workbench.py +0 -0
  95. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/static/.gitignore +0 -0
  96. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/static/favicon.ico +0 -0
  97. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/app/talkpipe_plugin_manager.py +0 -0
  98. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/chatterlang/__init__.py +0 -0
  99. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/chatterlang/compiler.py +0 -0
  100. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/chatterlang/parsers.py +0 -0
  101. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/chatterlang/registry.py +0 -0
  102. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/data/__init__.py +0 -0
  103. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/data/email.py +0 -0
  104. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/data/extraction.py +0 -0
  105. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/data/mongo.py +0 -0
  106. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/data/rss.py +0 -0
  107. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/llm/__init__.py +0 -0
  108. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/llm/chat.py +0 -0
  109. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/llm/config.py +0 -0
  110. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/llm/embedding.py +0 -0
  111. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/llm/embedding_adapters.py +0 -0
  112. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/llm/prompt_adapters.py +0 -0
  113. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/operations/__init__.py +0 -0
  114. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/operations/filtering.py +0 -0
  115. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/operations/matrices.py +0 -0
  116. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/operations/thread_ops.py +0 -0
  117. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/operations/transforms.py +0 -0
  118. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/pipe/__init__.py +0 -0
  119. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/pipe/basic.py +0 -0
  120. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/pipe/core.py +0 -0
  121. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/pipe/fork.py +0 -0
  122. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/pipe/io.py +0 -0
  123. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/pipe/math.py +0 -0
  124. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/search/abstract.py +0 -0
  125. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/search/lancedb.py +0 -0
  126. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/search/simplevectordb.py +0 -0
  127. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/search/whoosh.py +0 -0
  128. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/util/__init__.py +0 -0
  129. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/util/collections.py +0 -0
  130. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/util/config.py +0 -0
  131. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/util/data_manipulation.py +0 -0
  132. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/util/doc_extraction.py +0 -0
  133. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/util/os.py +0 -0
  134. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe/util/plugin_loader.py +0 -0
  135. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe.egg-info/dependency_links.txt +0 -0
  136. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe.egg-info/requires.txt +0 -0
  137. {talkpipe-0.9.2 → talkpipe-0.9.3}/src/talkpipe.egg-info/top_level.txt +0 -0
  138. {talkpipe-0.9.2 → talkpipe-0.9.3}/test-workflow.yml +0 -0
  139. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/conftest.py +0 -0
  140. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/app/test_chatterlang_reference_browser.py +0 -0
  141. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/app/test_chatterlang_reference_generator.py +0 -0
  142. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/app/test_chatterlang_script.py +0 -0
  143. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/app/test_chatterlang_serve.py +0 -0
  144. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/app/test_talkpipe_plugin_manager.py +0 -0
  145. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/chatterlang/test_chatterlang_workbench.py +0 -0
  146. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/chatterlang/test_compiler.py +0 -0
  147. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/chatterlang/test_parsers.py +0 -0
  148. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/sample_feed.pkl +0 -0
  149. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test.docx +0 -0
  150. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test_email.py +0 -0
  151. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test_extraction.py +0 -0
  152. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test_html.py +0 -0
  153. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test_html_exceptions.py +0 -0
  154. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test_mogomock.py +0 -0
  155. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test_mongo.py +0 -0
  156. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test_mongo_integration.py +0 -0
  157. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/data/test_rss.py +0 -0
  158. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/llm/test_chat.py +0 -0
  159. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/llm/test_embedding.py +0 -0
  160. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/operations/test_filtering.py +0 -0
  161. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/operations/test_matrices.py +0 -0
  162. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/operations/test_threading.py +0 -0
  163. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/operations/test_transforms.py +0 -0
  164. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/pipe/test_basic.py +0 -0
  165. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/pipe/test_core.py +0 -0
  166. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/pipe/test_fork.py +0 -0
  167. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/pipe/test_io.py +0 -0
  168. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/pipe/test_math.py +0 -0
  169. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/search/test_lancedb.py +0 -0
  170. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/search/test_simplevectordb.py +0 -0
  171. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/search/test_whoosh.py +0 -0
  172. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/test_documentation_examples.py +0 -0
  173. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/util/test_collections.py +0 -0
  174. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/util/test_config.py +0 -0
  175. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/util/test_data_manipulation.py +0 -0
  176. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/util/test_doc_extraction.py +0 -0
  177. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/util/test_plugin_loader.py +0 -0
  178. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/talkpipe/util/test_util.py +0 -0
  179. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/test_security_vulnerabilities.py +0 -0
  180. {talkpipe-0.9.2 → talkpipe-0.9.3}/tests/testutils.py +0 -0
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.3
4
+ ### Improvements
5
+ - Updated tutorials to use lancedb.
6
+ - Moved tutorial scripts out of shell scripts into their own files
7
+ - Fixed issue with Docker container not including all optional installation components
8
+ - Fixed string encoding issue with web page downloads
9
+ - Updated documentation for plugins to fix error
10
+ - Removed invalid script in pyproject.toml
11
+
3
12
  ## 0.9.2
4
13
  ### Improvements
5
14
  - Added ability for sources and segments to have multiple names in chatterlang.
@@ -34,8 +34,8 @@ COPY --chown=builder:builder src/ src/
34
34
  COPY --chown=builder:builder tests/ tests/
35
35
 
36
36
  # Install Python dependencies and build the package
37
- RUN python3 -m pip install --user --upgrade pip setuptools wheel build
38
- RUN python3 -m pip install --user numpy pandas matplotlib scikit-learn scipy
37
+ RUN python3 -m pip install --upgrade pip setuptools wheel build
38
+ RUN python3 -m pip install numpy pandas matplotlib scikit-learn scipy
39
39
  ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_TALKPIPE=0.1.0
40
40
  RUN python3 -m pip install --user -e .[dev,all]
41
41
  RUN python3 -m pytest --log-cli-level=DEBUG
@@ -70,7 +70,8 @@ COPY --from=builder --chown=app:app /build/dist/*.whl /tmp/
70
70
  RUN python3 -m pip install --no-cache-dir --upgrade pip && \
71
71
  python3 -m pip install --no-cache-dir \
72
72
  numpy pandas matplotlib scikit-learn scipy && \
73
- python3 -m pip install --no-cache-dir /tmp/*.whl && \
73
+ WHEEL_FILE=$(ls /tmp/*.whl) && \
74
+ python3 -m pip install --no-cache-dir "${WHEEL_FILE}[all]" && \
74
75
  rm -f /tmp/*.whl
75
76
 
76
77
  # Copy only necessary runtime files
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: talkpipe
3
- Version: 0.9.2
3
+ Version: 0.9.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>
@@ -4,7 +4,7 @@ Command-line tool for managing and inspecting TalkPipe plugins.
4
4
 
5
5
  ## Overview
6
6
 
7
- The `talkpipe_plugin_manager` command provides utilities to list, reload, and debug TalkPipe plugins that are installed via Python entry points.
7
+ The `talkpipe_plugins` command provides utilities to list, reload, and debug TalkPipe plugins that are installed via Python entry points.
8
8
 
9
9
  ## Installation
10
10
 
@@ -21,7 +21,7 @@ pip install talkpipe
21
21
  Display all discovered plugins and their status:
22
22
 
23
23
  ```bash
24
- talkpipe_plugin_manager --list
24
+ talkpipe_plugins --list
25
25
  ```
26
26
 
27
27
  **Example output:**
@@ -40,7 +40,7 @@ Failed plugins (1):
40
40
  Reload a specific plugin by name (useful during development):
41
41
 
42
42
  ```bash
43
- talkpipe_plugin_manager --reload my-data-plugin
43
+ talkpipe_plugins --reload my-data-plugin
44
44
  ```
45
45
 
46
46
  ### Verbose Output
@@ -48,7 +48,7 @@ talkpipe_plugin_manager --reload my-data-plugin
48
48
  Show detailed information:
49
49
 
50
50
  ```bash
51
- talkpipe_plugin_manager --list --verbose
51
+ talkpipe_plugins --list --verbose
52
52
  ```
53
53
 
54
54
  ## Plugin Discovery
@@ -65,7 +65,7 @@ setup(
65
65
  name="my-talkpipe-plugin",
66
66
  entry_points={
67
67
  "talkpipe.plugins": [
68
- "my_plugin = my_plugin.plugin:NetworkPlugin",
68
+ "my_plugin = my_plugin.plugin",
69
69
  ]
70
70
  }
71
71
  )
@@ -74,21 +74,31 @@ setup(
74
74
  **pyproject.toml:**
75
75
  ```toml
76
76
  [project.entry-points."talkpipe.plugins"]
77
- my_plugin = "my_plugin.plugin:NetworkPlugin"
77
+ my_plugin = "my_plugin.plugin"
78
78
  ```
79
79
 
80
+ The entry point should reference the **module** that contains your plugin code. Component registration happens automatically through decorators when the module is imported.
81
+
80
82
  ## How Plugin Loading Works
81
83
 
82
84
  When TalkPipe discovers a plugin, it performs the following steps:
83
85
 
84
- 1. **Import the module**: The plugin loader imports the module specified by the entry point (e.g., `my_plugin.plugin`)
86
+ 1. **Load the entry point**: The plugin loader loads whatever the entry point references (typically a module or function)
85
87
  2. **Automatic registration**: During import, any sources and segments defined or imported by the module are automatically registered with TalkPipe's registry system through decorators like `@registry.register_segment()`
86
- 3. **Optional initialization**: If the loaded class/module has an `initialize_plugin` function or method, it will be called for additional setup
88
+ 3. **Optional initialization**: If the loaded object has an `initialize_plugin` function attribute, it will be called for additional setup
87
89
 
88
90
  The key insight is that **simply importing the plugin module triggers component registration**. This happens through TalkPipe's decorator-based registry system.
89
91
 
92
+ **Important**: The entry point should reference either:
93
+ - A **module** (e.g., `my_plugin.plugin`) that can have a module-level `initialize_plugin()` function
94
+ - A **function** directly (e.g., `my_plugin.plugin:setup_plugin`)
95
+
96
+ Entry points pointing to classes will have the `initialize_plugin` called on the **class itself** (not an instance), so it would need to be a static method or classmethod if using a class.
97
+
90
98
  ### Example Plugin Structure
91
99
 
100
+ **Recommended: Module-level pattern**
101
+
92
102
  ```python
93
103
  # my_plugin/plugin.py
94
104
  from talkpipe.chatterlang import registry
@@ -104,19 +114,22 @@ class JsonParseSegment(AbstractSegment):
104
114
  """JSON parsing segment - registered automatically on import."""
105
115
  pass
106
116
 
107
- class NetworkPlugin:
108
- """Main plugin class referenced by entry point."""
109
-
110
- def initialize_plugin(self):
111
- """Optional: Called after module import for additional setup."""
112
- print("Network plugin initialized!")
113
- # Additional setup if needed
117
+ def initialize_plugin():
118
+ """Optional: Called after module import for additional setup."""
119
+ print("Network plugin initialized!")
120
+ # Additional setup if needed
121
+ ```
122
+
123
+ **Entry point configuration** (points to the module):
124
+ ```toml
125
+ [project.entry-points."talkpipe.plugins"]
126
+ network_plugin = "my_plugin.plugin"
114
127
  ```
115
128
 
116
- When this module is imported:
129
+ When this module is loaded:
117
130
  1. The `@registry.register_source("httpGet")` decorator runs, registering the `HttpGetSource`
118
- 2. The `@registry.register_segment("jsonParse")` decorator runs, registering the `JsonParseSegment`
119
- 3. The `NetworkPlugin.initialize_plugin()` method is called for any additional setup
131
+ 2. The `@registry.register_segment("jsonParse")` decorator runs, registering the `JsonParseSegment`
132
+ 3. The module-level `initialize_plugin()` function is called for any additional setup
120
133
 
121
134
  ### Alternative: Module-Level Registration
122
135
 
@@ -157,10 +170,10 @@ During plugin development, you can reload plugins without restarting Python:
157
170
  ```bash
158
171
  # Make changes to your plugin code
159
172
  # Then reload it
160
- talkpipe_plugin_manager --reload my-plugin
173
+ talkpipe_plugins --reload my-plugin
161
174
 
162
175
  # Verify it loaded successfully
163
- talkpipe_plugin_manager --list
176
+ talkpipe_plugins --list
164
177
  ```
165
178
 
166
179
  ## Integration with TalkPipe
@@ -57,20 +57,22 @@ However, for testing and development purposes, we often need synthetic data that
57
57
 
58
58
  ### The Solution: AI-Generated Stories
59
59
 
60
- The first step uses TalkPipe's ChatterLang scripting language to generate 50 fictional stories about technology development. Here's what happens:
60
+ The first step uses TalkPipe's ChatterLang scripting language to generate 50 fictional stories about technology development. The pipeline is defined in `Step_1_CreateSyntheticData.script`:
61
61
 
62
- ```bash
63
- export TALKPIPE_CHATTERLANG_SCRIPT='
64
- LOOP 50 TIMES {
65
- INPUT FROM "Write a fictitious five sentence story about technology development in an imaginary country."
66
- | llmPrompt[source="ollama", model="llama3.2", multi_turn=False]
67
- | toDict[field_list="_:content"]
68
- | llmPrompt[source="ollama", model="llama3.2", system_prompt="Write exactly one title for this story in plain text with no markdown", field="content", set_as="title", multi_turn=False]
69
- | dumpsJsonl | print;
70
- }
71
- '
62
+ ```
63
+ LOOP 50 TIMES {
64
+ INPUT FROM "Write a fictitious five sentence story about technology development in an imaginary country."
65
+ | llmPrompt[source="ollama", model="llama3.2", multi_turn=False]
66
+ | toDict[field_list="_:content"]
67
+ | llmPrompt[source="ollama", model="llama3.2", system_prompt="Write exactly one title for this story in plain text with no markdown", field="content", set_as="title", multi_turn=False]
68
+ | dumpsJsonl | print;
69
+ }
70
+ ```
71
+
72
+ To run this script:
72
73
 
73
- python -m talkpipe.app.chatterlang_script --script CHATTERLANG_SCRIPT > stories.json
74
+ ```bash
75
+ chatterlang_script --script Step_1_CreateSyntheticData.script > stories.json
74
76
  ```
75
77
 
76
78
  ### Breaking Down the Pipeline
@@ -166,17 +168,19 @@ Think of an index like the index at the back of a book, but much more sophistica
166
168
 
167
169
  ### The Solution: Whoosh Indexing
168
170
 
169
- Step 2 takes our generated stories and creates a searchable index using the Whoosh library:
171
+ Step 2 takes our generated stories and creates a searchable index using the Whoosh library. The pipeline is defined in `Step_2_IndexStories.script`:
170
172
 
171
- ```bash
172
- export TALKPIPE_CHATTERLANG_SCRIPT='
173
- INPUT FROM "stories.json"
174
- | readJsonl
175
- | progressTicks[tick_count=1, print_count=True]
176
- | indexWhoosh[index_path="./full_text_index", field_list="content,title", overwrite=True]
177
- '
173
+ ```
174
+ INPUT FROM "stories.json"
175
+ | readJsonl
176
+ | progressTicks[tick_count=1, print_count=True]
177
+ | indexWhoosh[index_path="./full_text_index", field_list="content,title", overwrite=True]
178
+ ```
179
+
180
+ To run this script:
178
181
 
179
- python -m talkpipe.app.chatterlang_script --script CHATTERLANG_SCRIPT
182
+ ```bash
183
+ chatterlang_script --script Step_2_IndexStories.script
180
184
  ```
181
185
 
182
186
  ### Understanding the Indexing Pipeline
@@ -283,15 +287,17 @@ Most search implementations require significant custom development, but TalkPipe
283
287
 
284
288
  ### The Solution: Dual Interface Search
285
289
 
286
- Step 3 creates both an API endpoint and a web interface using a single command:
290
+ Step 3 creates both an API endpoint and a web interface using a single command. The pipeline is defined in `Step_3_SearchStories.script`:
287
291
 
288
- ```bash
289
- export TALKPIPE_CHATTERLANG_SCRIPT='
290
- | searchWhoosh[index_path="full_text_index", field="query"]
291
- | formatItem[field_list="document.title:Title,document.content:Content,score:Score"]
292
- '
292
+ ```
293
+ | searchWhoosh[index_path="full_text_index", field="query"]
294
+ | formatItem[field_list="document.title:Title,document.content:Content,score:Score"]
295
+ ```
293
296
 
294
- python -m talkpipe.app.chatterlang_serve --form-config story_search_ui.yml --title "Story Search" --display-property query --script CHATTERLANG_SCRIPT
297
+ To run this script:
298
+
299
+ ```bash
300
+ chatterlang_serve --form-config story_search_ui.yml --title "Story Search" --display-property query --script Step_3_SearchStories.script
295
301
  ```
296
302
 
297
303
  ### Understanding the Search System
@@ -17,14 +17,10 @@
17
17
  # 6. The output is redirected to a file named "stories.json".
18
18
  ###################################################################################
19
19
 
20
- export TALKPIPE_CHATTERLANG_SCRIPT='
21
- LOOP 50 TIMES {
22
- INPUT FROM "Write a fictitious five sentence story about technology development in an imaginary country."
23
- | llmPrompt[source="ollama", model="llama3.2", multi_turn=False]
24
- | toDict[field_list="_:content"]
25
- | llmPrompt[source="ollama", model="llama3.2", system_prompt="Write exactly one title for this story in plain text with no markdown", field="content", set_as="title", multi_turn=False]
26
- | dumpsJsonl | print;
27
- }
28
- '
29
- #chatterlang_script --script "
30
- python -m talkpipe.app.chatterlang_script --script CHATTERLANG_SCRIPT > stories.json
20
+ LOOP 50 TIMES {
21
+ INPUT FROM "Write a fictitious five sentence story about technology development in an imaginary country."
22
+ | llmPrompt[source="ollama", model="llama3.2", multi_turn=False]
23
+ | toDict[field_list="_:content"]
24
+ | llmPrompt[source="ollama", model="llama3.2", system_prompt="Write exactly one title for this story in plain text with no markdown", field="content", set_as="title", multi_turn=False]
25
+ | dumpsJsonl | print;
26
+ }
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ chatterlang_script --script Step_1_CreateSyntheticData.script > stories.json
@@ -6,8 +6,8 @@
6
6
  # The indexed data can then be used for full-text search.
7
7
  #
8
8
  # As a side note, the first half of this script issues a single piece of data, the
9
- # filename. The next segment, `readJsonl`, reads the JSONL file line by line and
10
- # issues one decoded JSON object at a time. This is a good example of how the
9
+ # filename. The next segment, `readJsonl`, reads the JSONL file line by line and
10
+ # issues one decoded JSON object at a time. This is a good example of how the
11
11
  # constitution of the data being processed can change as it flows through the pipeline.
12
12
  #
13
13
  # The pipeline is:
@@ -16,12 +16,7 @@
16
16
  # 3. The index is stored in the specified path "./full_text_index".
17
17
  ###################################################################################
18
18
 
19
- export TALKPIPE_CHATTERLANG_SCRIPT='
20
- INPUT FROM "stories.json"
21
- | readJsonl
22
- | progressTicks[tick_count=1, print_count=True]
23
- | indexWhoosh[index_path="./full_text_index", field_list="content,title", overwrite=True]
24
- '
25
-
26
- #chatterlang_script --script "
27
- python -m talkpipe.app.chatterlang_script --script CHATTERLANG_SCRIPT
19
+ INPUT FROM "stories.json"
20
+ | readJsonl
21
+ | progressTicks[tick_count=1, print_count=True]
22
+ | indexWhoosh[index_path="./full_text_index", field_list="content,title", overwrite=True]
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ chatterlang_script --script Step_2_IndexStories.script
@@ -12,8 +12,5 @@
12
12
  # needing to write any code.
13
13
  ###################################################################################
14
14
 
15
- export TALKPIPE_CHATTERLANG_SCRIPT='
16
- | searchWhoosh[index_path="full_text_index", field="query"]
17
- | formatItem[field_list="document.title:Title,document.content:Content,score:Score"]
18
- '
19
- chatterlang_serve --form-config story_search_ui.yml --title \"Story\ Search\" --display-property query --script CHATTERLANG_SCRIPT
15
+ | searchWhoosh[index_path="full_text_index", field="query"]
16
+ | formatItem[field_list="document.title:Title,document.content:Content,score:Score"]
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ chatterlang_serve --form-config story_search_ui.yml --title "Story Search" --display-property query --script Step_3_SearchStories.script
@@ -34,16 +34,20 @@ Vector embeddings solve this by converting text into high-dimensional mathematic
34
34
 
35
35
  ### The Implementation
36
36
 
37
+ The pipeline is defined in `Step_1_CreateVectorDatabase.script`:
38
+
39
+ ```
40
+ INPUT FROM "../Tutorial_1-Document_Indexing/stories.json"
41
+ | readJsonl
42
+ | progressTicks[tick_count=1, print_count=True]
43
+ | llmEmbed[field="content", source="ollama", model="mxbai-embed-large", set_as="vector"]
44
+ | addToLanceDB[path="./vector_index", table_name="stories", vector_field="vector", metadata_field_list="title,content", overwrite=True]
45
+ ```
46
+
47
+ To run this script:
48
+
37
49
  ```bash
38
- export TALKPIPE_CHATTERLANG_SCRIPT='
39
- INPUT FROM "../Tutorial_1-Document_Indexing/stories.json"
40
- | readJsonl
41
- | progressTicks[tick_count=1, print_count=True]
42
- | llmEmbed[field="content", source="ollama", model="mxbai-embed-large", set_as="vector"]
43
- | addVector[path="./vector_index", vector_field="vector", metadata_field_list="title,content", overwrite=True]
44
- '
45
-
46
- python -m talkpipe.app.chatterlang_script --script CHATTERLANG_SCRIPT
50
+ chatterlang_script --script Step_1_CreateVectorDatabase.script
47
51
  ```
48
52
 
49
53
  ### Breaking Down the Pipeline
@@ -67,12 +71,12 @@ The `mxbai-embed-large` model is specifically designed for semantic search - it'
67
71
 
68
72
  **3. Building the Index**
69
73
  ```
70
- | addVector[path="./vector_index", vector_field="vector", metadata_field_list="title,content", overwrite=True]
74
+ | addToLanceDB[path="./vector_index", table_name="stories", vector_field="vector", metadata_field_list="title,content", overwrite=True]
71
75
  ```
72
76
  This creates a specialized index that:
73
- - Stores vectors for similarity search
77
+ - Stores vectors for similarity search in a LanceDB table named "stories"
74
78
  - Preserves original metadata (title and content) for retrieval
75
- - Enables fast nearest-neighbor queries
79
+ - Enables fast nearest-neighbor queries using LanceDB's efficient vector search capabilities
76
80
 
77
81
  ### Real-World Applications
78
82
 
@@ -96,15 +100,19 @@ Your users don't always know the right keywords. Sometimes they have an example
96
100
 
97
101
  ### The Solution: Semantic Search Interface
98
102
 
103
+ The pipeline is defined in `Step_2_SearchByExample.script`:
104
+
105
+ ```
106
+ | copy
107
+ | llmEmbed[field="example", source="ollama", model="mxbai-embed-large", set_as="vector"]
108
+ | searchLanceDB[field="vector", path="./vector_index", table_name="stories", limit=10]
109
+ | formatItem[field_list="document.title:Title, document.content:Content, score:Score"]
110
+ ```
111
+
112
+ To run this script:
113
+
99
114
  ```bash
100
- export TALKPIPE_CHATTERLANG_SCRIPT='
101
- | copy
102
- | llmEmbed[field="example", source="ollama", model="mxbai-embed-large", set_as="vector"]
103
- | searchVector[vector_field="vector", path="./vector_index"]
104
- | formatItem[field_list="document.title:Title, document.content:Content, score:Score"]
105
- '
106
-
107
- python -m talkpipe.app.chatterlang_serve --form-config story_by_example_ui.yml --display-property example --script CHATTERLANG_SCRIPT
115
+ chatterlang_serve --form-config story_by_example_ui.yml --display-property example --script Step_2_SearchByExample.script
108
116
  ```
109
117
 
110
118
  ### Understanding the Search Pipeline
@@ -123,9 +131,9 @@ The user's example text is converted to a vector using the same model that index
123
131
 
124
132
  **3. Vector Search**
125
133
  ```
126
- | searchVector[vector_field="vector", path="./vector_index"]
134
+ | searchLanceDB[field="vector", path="./vector_index", table_name="stories", limit=10]
127
135
  ```
128
- This finds the documents whose vectors are closest to the query vector - literally the nearest neighbors in high-dimensional space.
136
+ This finds the documents whose vectors are closest to the query vector - literally the nearest neighbors in high-dimensional space. LanceDB provides efficient approximate nearest neighbor search for fast retrieval.
129
137
 
130
138
  **4. Result Formatting**
131
139
  ```
@@ -167,23 +175,27 @@ Finding relevant documents is helpful, but what users often really want is an an
167
175
 
168
176
  ### The RAG Implementation
169
177
 
178
+ The pipeline is defined in `Step_3_SpecializedRag.script`:
179
+
180
+ ```
181
+ | copy
182
+ | llmEmbed[field="example", source="ollama", model="mxbai-embed-large", set_as="vector"]
183
+ | searchLanceDB[field="vector", path="./vector_index", table_name="stories", all_results_at_once=True, set_as="results"]
184
+ | ragPrompt
185
+ | llmPrompt[source="ollama", model="llama3.2"]
186
+ ```
187
+
188
+ To run this script:
189
+
170
190
  ```bash
171
- export TALKPIPE_CHATTERLANG_SCRIPT='
172
- | copy
173
- | llmEmbed[field="example", source="ollama", model="mxbai-embed-large", set_as="vector"]
174
- | searchVector[vector_field="vector", path="./vector_index", all_results_at_once=True, set_as="results"]
175
- | ragPrompt
176
- | llmPrompt[source="ollama", model="llama3.2"]
177
- '
178
-
179
- python -m talkpipe.app.chatterlang_serve --form-config story_by_example_ui.yml --load-module step_3_extras.py --display-property example --script CHATTERLANG_SCRIPT
191
+ chatterlang_serve --form-config story_by_example_ui.yml --load-module step_3_extras.py --display-property example --script Step_3_SpecializedRag.script
180
192
  ```
181
193
 
182
194
  ### What's Different in the RAG Pipeline
183
195
 
184
196
  **1. Batch Results Collection**
185
197
  ```
186
- | searchVector[..., all_results_at_once=True, set_as="results"]
198
+ | searchLanceDB[..., all_results_at_once=True, set_as="results"]
187
199
  ```
188
200
  Instead of processing results one by one, we collect all search results together. This allows the next step to see the full context.
189
201
 
@@ -10,12 +10,8 @@
10
10
  # 3. The embeddings are stored in a vector index at the specified path.
11
11
  ###################################################################################
12
12
 
13
- export TALKPIPE_CHATTERLANG_SCRIPT='
14
- INPUT FROM "../Tutorial_1-Document_Indexing/stories.json"
15
- | readJsonl
16
- | progressTicks[tick_count=1, print_count=True]
17
- | llmEmbed[field="content", source="ollama", model="mxbai-embed-large", set_as="vector"]
18
- | addVector[path="./vector_index", vector_field="vector", metadata_field_list="title,content", overwrite=True]
19
- '
20
-
21
- chatterlang_script --script CHATTERLANG_SCRIPT
13
+ INPUT FROM "../Tutorial_1-Document_Indexing/stories.json"
14
+ | readJsonl
15
+ | progressTicks[tick_count=1, print_count=True]
16
+ | llmEmbed[field="content", source="ollama", model="mxbai-embed-large", set_as="vector"]
17
+ | addToLanceDB[path="./vector_index", table_name="stories", vector_field="vector", metadata_field_list="title,content", overwrite=True]
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ chatterlang_script --script Step_1_CreateVectorDatabase.script
@@ -11,15 +11,11 @@
11
11
  # working with the endpoint api because the input data will be sent to the
12
12
  # browser.
13
13
  # 3. Use the `llmEmbed` segment to convert the example into a vector.
14
- # 4. Use the `searchVector` segment to search the vector index for similar documents.
14
+ # 4. Use the `searchLanceDB` segment to search the vector index for similar documents.
15
15
  # 5. Format the results using `formatItem` and print them.
16
16
  ###################################################################################
17
17
 
18
- export TALKPIPE_CHATTERLANG_SCRIPT='
19
- | copy
20
- | llmEmbed[field="example", source="ollama", model="mxbai-embed-large", set_as="vector"]
21
- | searchVector[vector_field="vector", path="./vector_index", top_k=10]
22
- | formatItem[field_list="document.title:Title, document.content:Content, score:Score"]
23
- '
24
-
25
- chatterlang_serve --form-config story_by_example_ui.yml --display-property example --script CHATTERLANG_SCRIPT
18
+ | copy
19
+ | llmEmbed[field="example", source="ollama", model="mxbai-embed-large", set_as="vector"]
20
+ | searchLanceDB[field="vector", path="./vector_index", table_name="stories", limit=10]
21
+ | formatItem[field_list="document.title:Title, document.content:Content, score:Score"]
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ chatterlang_serve --form-config story_by_example_ui.yml --display-property example --script Step_2_SearchByExample.script
@@ -3,22 +3,18 @@
3
3
  # It allows users to input an example query, which is then converted into a vector
4
4
  # using an LLM embedding model. The vector is used to search a vector index for similar
5
5
  # documents, and the results are formatted and returned.
6
- #
6
+ #
7
7
  # The pipeline is:
8
8
  # 1. Read the example query from the user.
9
9
  # 2. Make a defensive copy of the input data for browser compatibility.
10
10
  # 3. Use the `llmEmbed` segment to convert the example into a vector.
11
- # 4. Use the `searchVector` segment to search the vector index for similar documents
11
+ # 4. Use the `searchLanceDB` segment to search the vector index for similar documents
12
12
  # 5. use ragPrompt to create a prompt from the query and the retrieve documents.
13
13
  # 6. Use the `llmPrompt` segment to generate a final response using the LLM.
14
14
  ###################################################################################
15
15
 
16
- export TALKPIPE_CHATTERLANG_SCRIPT='
17
- | copy
18
- | llmEmbed[field="example", source="ollama", model="mxbai-embed-large", set_as="vector"]
19
- | searchVector[vector_field="vector", path="./vector_index", all_results_at_once=True, set_as="results"]
20
- | ragPrompt
21
- | llmPrompt[source="ollama", model="llama3.2"]
22
- '
23
-
24
- chatterlang_serve --form-config story_by_example_ui.yml --load-module step_3_extras.py --display-property example --script CHATTERLANG_SCRIPT
16
+ | copy
17
+ | llmEmbed[field="example", source="ollama", model="mxbai-embed-large", set_as="vector"]
18
+ | searchLanceDB[field="vector", path="./vector_index", table_name="stories", all_results_at_once=True, set_as="results"]
19
+ | ragPrompt
20
+ | llmPrompt[source="ollama", model="llama3.2"]
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ chatterlang_serve --form-config story_by_example_ui.yml --load-module step_3_extras.py --display-property example --script Step_3_SpecializedRag.script