trustgraph-flow 2.7.3__tar.gz → 2.7.5__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 (410) hide show
  1. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/PKG-INFO +1 -1
  2. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/pyproject.toml +1 -0
  3. trustgraph_flow-2.7.5/trustgraph/flow_version.py +1 -0
  4. trustgraph_flow-2.7.5/trustgraph/gateway/dispatch/image_to_text.py +32 -0
  5. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/manager.py +2 -0
  6. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/registry.py +1 -0
  7. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/service/iam.py +1 -0
  8. trustgraph_flow-2.7.5/trustgraph/model/image_to_text/openai/service.py +172 -0
  9. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/azure/llm.py +31 -5
  10. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/azure_openai/llm.py +21 -2
  11. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/claude/llm.py +39 -5
  12. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/cohere/llm.py +8 -2
  13. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/llamafile/llm.py +34 -6
  14. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/lmstudio/llm.py +34 -6
  15. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/mistral/llm.py +36 -6
  16. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/ollama/llm.py +21 -4
  17. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/openai/llm.py +46 -2
  18. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/openai/variants.py +14 -0
  19. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/tgi/llm.py +19 -3
  20. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/vllm/llm.py +29 -3
  21. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/prompt/template/service.py +13 -3
  22. trustgraph_flow-2.7.5/trustgraph/storage/kw_index/fts5/__init__.py +1 -0
  23. trustgraph_flow-2.7.5/trustgraph/storage/kw_index/fts5/__main__.py +6 -0
  24. trustgraph_flow-2.7.5/trustgraph/tables/__init__.py +0 -0
  25. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/template/prompt_manager.py +15 -1
  26. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph_flow.egg-info/PKG-INFO +1 -1
  27. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph_flow.egg-info/SOURCES.txt +5 -0
  28. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph_flow.egg-info/entry_points.txt +1 -0
  29. trustgraph_flow-2.7.3/trustgraph/flow_version.py +0 -1
  30. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/README.md +0 -0
  31. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/setup.cfg +0 -0
  32. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/__init__.py +0 -0
  33. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/__init__.py +0 -0
  34. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/mcp_tool/__init__.py +0 -0
  35. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/mcp_tool/__main__.py +0 -0
  36. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/mcp_tool/service.py +0 -0
  37. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/__init__.py +0 -0
  38. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/__main__.py +0 -0
  39. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/aggregator.py +0 -0
  40. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/meta_router.py +0 -0
  41. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/pattern_base.py +0 -0
  42. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/plan_pattern.py +0 -0
  43. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/react_pattern.py +0 -0
  44. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/service.py +0 -0
  45. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/orchestrator/supervisor_pattern.py +0 -0
  46. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/react/__init__.py +0 -0
  47. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/react/__main__.py +0 -0
  48. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/react/agent_manager.py +0 -0
  49. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/react/service.py +0 -0
  50. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/react/streaming_parser.py +0 -0
  51. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/react/tools.py +0 -0
  52. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/react/types.py +0 -0
  53. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/agent/tool_filter.py +0 -0
  54. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/__init__.py +0 -0
  55. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/base.py +0 -0
  56. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/bootstrapper/__init__.py +0 -0
  57. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/bootstrapper/__main__.py +0 -0
  58. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/bootstrapper/service.py +0 -0
  59. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/initialisers/__init__.py +0 -0
  60. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/initialisers/default_flow_start.py +0 -0
  61. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/initialisers/pulsar_topology.py +0 -0
  62. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/initialisers/template_seed.py +0 -0
  63. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/bootstrap/initialisers/workspace_init.py +0 -0
  64. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/chunking/__init__.py +0 -0
  65. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/chunking/recursive/__init__.py +0 -0
  66. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/chunking/recursive/__main__.py +0 -0
  67. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/chunking/recursive/chunker.py +0 -0
  68. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/chunking/token/__init__.py +0 -0
  69. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/chunking/token/__main__.py +0 -0
  70. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/chunking/token/chunker.py +0 -0
  71. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/config/service/__init__.py +0 -0
  72. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/config/service/__main__.py +0 -0
  73. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/config/service/config.py +0 -0
  74. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/config/service/service.py +0 -0
  75. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/cores/__init__.py +0 -0
  76. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/cores/__main__.py +0 -0
  77. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/cores/knowledge.py +0 -0
  78. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/cores/service.py +0 -0
  79. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/decoding/__init__.py +0 -0
  80. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/decoding/mistral_ocr/__init__.py +0 -0
  81. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/decoding/mistral_ocr/__main__.py +0 -0
  82. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/decoding/mistral_ocr/processor.py +0 -0
  83. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/decoding/pdf/__init__.py +0 -0
  84. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/decoding/pdf/__main__.py +0 -0
  85. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/decoding/pdf/pdf_decoder.py +0 -0
  86. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/direct/__init__.py +0 -0
  87. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/direct/cassandra_kg.py +0 -0
  88. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/direct/milvus_doc_embeddings.py +0 -0
  89. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/direct/milvus_graph_embeddings.py +0 -0
  90. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/__init__.py +0 -0
  91. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/document_embeddings/__init__.py +0 -0
  92. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/document_embeddings/__main__.py +0 -0
  93. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/document_embeddings/embeddings.py +0 -0
  94. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/fastembed/__init__.py +0 -0
  95. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/fastembed/__main__.py +0 -0
  96. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/fastembed/processor.py +0 -0
  97. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/graph_embeddings/__init__.py +0 -0
  98. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/graph_embeddings/__main__.py +0 -0
  99. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/graph_embeddings/embeddings.py +0 -0
  100. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/ollama/__init__.py +0 -0
  101. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/ollama/__main__.py +0 -0
  102. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/ollama/processor.py +0 -0
  103. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/row_embeddings/__init__.py +0 -0
  104. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/row_embeddings/__main__.py +0 -0
  105. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/embeddings/row_embeddings/embeddings.py +0 -0
  106. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/external/__init__.py +0 -0
  107. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/external/wikipedia/__init__.py +0 -0
  108. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/external/wikipedia/__main__.py +0 -0
  109. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/external/wikipedia/service.py +0 -0
  110. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/__init__.py +0 -0
  111. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/__init__.py +0 -0
  112. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/agent/__init__.py +0 -0
  113. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/agent/__main__.py +0 -0
  114. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/agent/extract.py +0 -0
  115. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/definitions/__init__.py +0 -0
  116. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/definitions/__main__.py +0 -0
  117. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/definitions/extract.py +0 -0
  118. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/__init__.py +0 -0
  119. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/entity_normalizer.py +0 -0
  120. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/extract.py +0 -0
  121. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/ontology_embedder.py +0 -0
  122. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/ontology_loader.py +0 -0
  123. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/ontology_selector.py +0 -0
  124. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/run.py +0 -0
  125. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/simplified_parser.py +0 -0
  126. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/text_processor.py +0 -0
  127. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/triple_converter.py +0 -0
  128. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/ontology/vector_store.py +0 -0
  129. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/relationships/__init__.py +0 -0
  130. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/relationships/__main__.py +0 -0
  131. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/relationships/extract.py +0 -0
  132. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/rows/__init__.py +0 -0
  133. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/rows/__main__.py +0 -0
  134. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/rows/processor.py +0 -0
  135. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/topics/__init__.py +0 -0
  136. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/topics/__main__.py +0 -0
  137. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/extract/kg/topics/extract.py +0 -0
  138. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/flow/__init__.py +0 -0
  139. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/flow/service/__init__.py +0 -0
  140. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/flow/service/__main__.py +0 -0
  141. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/flow/service/flow.py +0 -0
  142. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/flow/service/service.py +0 -0
  143. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/__init__.py +0 -0
  144. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/__main__.py +0 -0
  145. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/audit.py +0 -0
  146. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/auth.py +0 -0
  147. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/capabilities.py +0 -0
  148. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/config/receiver.py +0 -0
  149. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/agent.py +0 -0
  150. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/collection_management.py +0 -0
  151. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/config.py +0 -0
  152. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/core_export.py +0 -0
  153. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/core_import.py +0 -0
  154. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/document_embeddings_export.py +0 -0
  155. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/document_embeddings_import.py +0 -0
  156. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/document_embeddings_query.py +0 -0
  157. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/document_load.py +0 -0
  158. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/document_rag.py +0 -0
  159. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/document_stream.py +0 -0
  160. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/embeddings.py +0 -0
  161. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/entity_contexts_export.py +0 -0
  162. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/entity_contexts_import.py +0 -0
  163. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/flow.py +0 -0
  164. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/graph_embeddings_export.py +0 -0
  165. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/graph_embeddings_import.py +0 -0
  166. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/graph_embeddings_query.py +0 -0
  167. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/graph_rag.py +0 -0
  168. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/iam.py +0 -0
  169. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/knowledge.py +0 -0
  170. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/librarian.py +0 -0
  171. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/mcp_tool.py +0 -0
  172. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/mux.py +0 -0
  173. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/nlp_query.py +0 -0
  174. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/prompt.py +0 -0
  175. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/requestor.py +0 -0
  176. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/reranker.py +0 -0
  177. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/row_embeddings_query.py +0 -0
  178. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/rows_import.py +0 -0
  179. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/rows_query.py +0 -0
  180. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/sender.py +0 -0
  181. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/serialize.py +0 -0
  182. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/sparql_query.py +0 -0
  183. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/streamer.py +0 -0
  184. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/structured_diag.py +0 -0
  185. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/structured_query.py +0 -0
  186. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/text_completion.py +0 -0
  187. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/text_load.py +0 -0
  188. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/triples_export.py +0 -0
  189. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/triples_import.py +0 -0
  190. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/dispatch/triples_query.py +0 -0
  191. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/auth_endpoints.py +0 -0
  192. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/constant_endpoint.py +0 -0
  193. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/i18n.py +0 -0
  194. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/iam_endpoint.py +0 -0
  195. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/manager.py +0 -0
  196. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/metrics.py +0 -0
  197. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/registry_endpoint.py +0 -0
  198. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/socket.py +0 -0
  199. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/stream_endpoint.py +0 -0
  200. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/endpoint/variable_endpoint.py +0 -0
  201. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/running.py +0 -0
  202. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/service.py +0 -0
  203. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/unused/dbpedia.py +0 -0
  204. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/unused/encyclopedia.py +0 -0
  205. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/gateway/unused/internet_search.py +0 -0
  206. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/__init__.py +0 -0
  207. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/noauth/__init__.py +0 -0
  208. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/noauth/__main__.py +0 -0
  209. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/noauth/handler.py +0 -0
  210. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/noauth/service.py +0 -0
  211. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/service/__init__.py +0 -0
  212. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/service/__main__.py +0 -0
  213. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/iam/service/service.py +0 -0
  214. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/librarian/__init__.py +0 -0
  215. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/librarian/__main__.py +0 -0
  216. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/librarian/blob_store.py +0 -0
  217. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/librarian/collection_manager.py +0 -0
  218. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/librarian/librarian.py +0 -0
  219. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/librarian/service.py +0 -0
  220. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/metering/__init__.py +0 -0
  221. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/metering/__main__.py +0 -0
  222. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/metering/counter.py +0 -0
  223. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/__init__.py +0 -0
  224. {trustgraph_flow-2.7.3/trustgraph/model/text_completion → trustgraph_flow-2.7.5/trustgraph/model/image_to_text}/__init__.py +0 -0
  225. {trustgraph_flow-2.7.3/trustgraph/query/sparql → trustgraph_flow-2.7.5/trustgraph/model/image_to_text/openai}/__init__.py +0 -0
  226. {trustgraph_flow-2.7.3/trustgraph/query/sparql → trustgraph_flow-2.7.5/trustgraph/model/image_to_text/openai}/__main__.py +0 -0
  227. {trustgraph_flow-2.7.3/trustgraph/prompt → trustgraph_flow-2.7.5/trustgraph/model/text_completion}/__init__.py +0 -0
  228. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/azure/__init__.py +0 -0
  229. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/azure/__main__.py +0 -0
  230. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/azure_openai/__init__.py +0 -0
  231. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/azure_openai/__main__.py +0 -0
  232. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/claude/__init__.py +0 -0
  233. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/claude/__main__.py +0 -0
  234. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/cohere/__init__.py +0 -0
  235. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/cohere/__main__.py +0 -0
  236. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/llamafile/__init__.py +0 -0
  237. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/llamafile/__main__.py +0 -0
  238. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/lmstudio/__init__.py +0 -0
  239. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/lmstudio/__main__.py +0 -0
  240. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/mistral/__init__.py +0 -0
  241. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/mistral/__main__.py +0 -0
  242. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/ollama/__init__.py +0 -0
  243. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/ollama/__main__.py +0 -0
  244. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/openai/__init__.py +0 -0
  245. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/openai/__main__.py +0 -0
  246. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/tgi/__init__.py +0 -0
  247. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/tgi/__main__.py +0 -0
  248. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/vllm/__init__.py +0 -0
  249. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/model/text_completion/vllm/__main__.py +0 -0
  250. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/processing/__init__.py +0 -0
  251. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/processing/__main__.py +0 -0
  252. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/processing/processing.py +0 -0
  253. {trustgraph_flow-2.7.3/trustgraph/query → trustgraph_flow-2.7.5/trustgraph/prompt}/__init__.py +0 -0
  254. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/prompt/template/__init__.py +0 -0
  255. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/prompt/template/__main__.py +0 -0
  256. {trustgraph_flow-2.7.3/trustgraph/query/doc_embeddings → trustgraph_flow-2.7.5/trustgraph/query}/__init__.py +0 -0
  257. {trustgraph_flow-2.7.3/trustgraph/query/graph_embeddings → trustgraph_flow-2.7.5/trustgraph/query/doc_embeddings}/__init__.py +0 -0
  258. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/milvus/__init__.py +0 -0
  259. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/milvus/__main__.py +0 -0
  260. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/milvus/service.py +0 -0
  261. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/pinecone/__init__.py +0 -0
  262. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/pinecone/__main__.py +0 -0
  263. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/pinecone/service.py +0 -0
  264. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/qdrant/__init__.py +0 -0
  265. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/qdrant/__main__.py +0 -0
  266. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/doc_embeddings/qdrant/service.py +0 -0
  267. {trustgraph_flow-2.7.3/trustgraph/query/rows → trustgraph_flow-2.7.5/trustgraph/query/graph_embeddings}/__init__.py +0 -0
  268. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/milvus/__init__.py +0 -0
  269. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/milvus/__main__.py +0 -0
  270. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/milvus/service.py +0 -0
  271. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/pinecone/__init__.py +0 -0
  272. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/pinecone/__main__.py +0 -0
  273. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/pinecone/service.py +0 -0
  274. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/qdrant/__init__.py +0 -0
  275. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/qdrant/__main__.py +0 -0
  276. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graph_embeddings/qdrant/service.py +0 -0
  277. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graphql/__init__.py +0 -0
  278. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graphql/filters.py +0 -0
  279. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graphql/schema.py +0 -0
  280. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/graphql/types.py +0 -0
  281. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/__init__.py +0 -0
  282. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/answer_generator.py +0 -0
  283. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/backend_router.py +0 -0
  284. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/cache.py +0 -0
  285. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/cypher_executor.py +0 -0
  286. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/cypher_generator.py +0 -0
  287. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/error_handling.py +0 -0
  288. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/monitoring.py +0 -0
  289. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/multi_language.py +0 -0
  290. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/ontology_matcher.py +0 -0
  291. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/query_explanation.py +0 -0
  292. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/query_optimizer.py +0 -0
  293. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/query_service.py +0 -0
  294. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/question_analyzer.py +0 -0
  295. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/sparql_cassandra.py +0 -0
  296. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/ontology/sparql_generator.py +0 -0
  297. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/row_embeddings/__init__.py +0 -0
  298. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/row_embeddings/qdrant/__init__.py +0 -0
  299. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/row_embeddings/qdrant/__main__.py +0 -0
  300. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/row_embeddings/qdrant/service.py +0 -0
  301. {trustgraph_flow-2.7.3/trustgraph/query/triples → trustgraph_flow-2.7.5/trustgraph/query/rows}/__init__.py +0 -0
  302. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/rows/cassandra/__init__.py +0 -0
  303. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/rows/cassandra/__main__.py +0 -0
  304. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/rows/cassandra/service.py +0 -0
  305. {trustgraph_flow-2.7.3/trustgraph/storage/kw_index/fts5 → trustgraph_flow-2.7.5/trustgraph/query/sparql}/__init__.py +0 -0
  306. {trustgraph_flow-2.7.3/trustgraph/storage/kw_index/fts5 → trustgraph_flow-2.7.5/trustgraph/query/sparql}/__main__.py +0 -0
  307. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/sparql/algebra.py +0 -0
  308. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/sparql/expressions.py +0 -0
  309. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/sparql/parser.py +0 -0
  310. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/sparql/service.py +0 -0
  311. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/sparql/solutions.py +0 -0
  312. {trustgraph_flow-2.7.3/trustgraph/retrieval → trustgraph_flow-2.7.5/trustgraph/query/triples}/__init__.py +0 -0
  313. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/cassandra/__init__.py +0 -0
  314. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/cassandra/__main__.py +0 -0
  315. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/cassandra/service.py +0 -0
  316. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/falkordb/__init__.py +0 -0
  317. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/falkordb/__main__.py +0 -0
  318. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/falkordb/service.py +0 -0
  319. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/memgraph/__init__.py +0 -0
  320. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/memgraph/__main__.py +0 -0
  321. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/memgraph/service.py +0 -0
  322. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/neo4j/__init__.py +0 -0
  323. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/neo4j/__main__.py +0 -0
  324. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/query/triples/neo4j/service.py +0 -0
  325. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/reranker/__init__.py +0 -0
  326. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/reranker/flashrank/__init__.py +0 -0
  327. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/reranker/flashrank/__main__.py +0 -0
  328. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/reranker/flashrank/processor.py +0 -0
  329. {trustgraph_flow-2.7.3/trustgraph/storage → trustgraph_flow-2.7.5/trustgraph/retrieval}/__init__.py +0 -0
  330. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/document_rag/__init__.py +0 -0
  331. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/document_rag/__main__.py +0 -0
  332. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/document_rag/document_rag.py +0 -0
  333. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/document_rag/rag.py +0 -0
  334. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/document_rag/rerank.py +0 -0
  335. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/graph_rag/__init__.py +0 -0
  336. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/graph_rag/__main__.py +0 -0
  337. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/graph_rag/graph_rag.py +0 -0
  338. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/graph_rag/rag.py +0 -0
  339. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/nlp_query/__init__.py +0 -0
  340. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/nlp_query/__main__.py +0 -0
  341. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/nlp_query/service.py +0 -0
  342. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/structured_diag/__init__.py +0 -0
  343. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/structured_diag/service.py +0 -0
  344. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/structured_diag/type_detector.py +0 -0
  345. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/structured_query/__init__.py +0 -0
  346. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/structured_query/__main__.py +0 -0
  347. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/retrieval/structured_query/service.py +0 -0
  348. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/rev_gateway/__init__.py +0 -0
  349. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/rev_gateway/__main__.py +0 -0
  350. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/rev_gateway/dispatcher.py +0 -0
  351. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/rev_gateway/service.py +0 -0
  352. {trustgraph_flow-2.7.3/trustgraph/storage/doc_embeddings → trustgraph_flow-2.7.5/trustgraph/storage}/__init__.py +0 -0
  353. {trustgraph_flow-2.7.3/trustgraph/storage/graph_embeddings → trustgraph_flow-2.7.5/trustgraph/storage/doc_embeddings}/__init__.py +0 -0
  354. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/milvus/__init__.py +0 -0
  355. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/milvus/__main__.py +0 -0
  356. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/milvus/write.py +0 -0
  357. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/pinecone/__init__.py +0 -0
  358. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/pinecone/__main__.py +0 -0
  359. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/pinecone/write.py +0 -0
  360. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/qdrant/__init__.py +0 -0
  361. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/qdrant/__main__.py +0 -0
  362. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/doc_embeddings/qdrant/write.py +0 -0
  363. {trustgraph_flow-2.7.3/trustgraph/storage/kw_index → trustgraph_flow-2.7.5/trustgraph/storage/graph_embeddings}/__init__.py +0 -0
  364. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/milvus/__init__.py +0 -0
  365. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/milvus/__main__.py +0 -0
  366. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/milvus/write.py +0 -0
  367. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/pinecone/__init__.py +0 -0
  368. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/pinecone/__main__.py +0 -0
  369. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/pinecone/write.py +0 -0
  370. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/qdrant/__init__.py +0 -0
  371. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/qdrant/__main__.py +0 -0
  372. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/graph_embeddings/qdrant/write.py +0 -0
  373. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/knowledge/__init__.py +0 -0
  374. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/knowledge/__main__.py +0 -0
  375. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/knowledge/store.py +0 -0
  376. {trustgraph_flow-2.7.3/trustgraph/storage/rows → trustgraph_flow-2.7.5/trustgraph/storage/kw_index}/__init__.py +0 -0
  377. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/kw_index/fts5/service.py +0 -0
  378. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/row_embeddings/__init__.py +0 -0
  379. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/row_embeddings/qdrant/__init__.py +0 -0
  380. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/row_embeddings/qdrant/__main__.py +0 -0
  381. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/row_embeddings/qdrant/write.py +0 -0
  382. {trustgraph_flow-2.7.3/trustgraph/storage/triples → trustgraph_flow-2.7.5/trustgraph/storage/rows}/__init__.py +0 -0
  383. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/rows/cassandra/__init__.py +0 -0
  384. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/rows/cassandra/__main__.py +0 -0
  385. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/rows/cassandra/write.py +0 -0
  386. {trustgraph_flow-2.7.3/trustgraph/tables → trustgraph_flow-2.7.5/trustgraph/storage/triples}/__init__.py +0 -0
  387. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/cassandra/__init__.py +0 -0
  388. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/cassandra/__main__.py +0 -0
  389. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/cassandra/write.py +0 -0
  390. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/falkordb/__init__.py +0 -0
  391. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/falkordb/__main__.py +0 -0
  392. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/falkordb/write.py +0 -0
  393. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/memgraph/__init__.py +0 -0
  394. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/memgraph/__main__.py +0 -0
  395. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/memgraph/write.py +0 -0
  396. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/neo4j/__init__.py +0 -0
  397. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/neo4j/__main__.py +0 -0
  398. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/storage/triples/neo4j/write.py +0 -0
  399. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/tables/cassandra_async.py +0 -0
  400. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/tables/config.py +0 -0
  401. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/tables/iam.py +0 -0
  402. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/tables/knowledge.py +0 -0
  403. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/tables/library.py +0 -0
  404. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/template/__init__.py +0 -0
  405. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/tool_service/__init__.py +0 -0
  406. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/tool_service/joke/__init__.py +0 -0
  407. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph/tool_service/joke/service.py +0 -0
  408. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph_flow.egg-info/dependency_links.txt +0 -0
  409. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph_flow.egg-info/requires.txt +0 -0
  410. {trustgraph_flow-2.7.3 → trustgraph_flow-2.7.5}/trustgraph_flow.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trustgraph-flow
3
- Version: 2.7.3
3
+ Version: 2.7.5
4
4
  Summary: TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline.
5
5
  Author-email: "trustgraph.ai" <security@trustgraph.ai>
6
6
  Project-URL: Homepage, https://github.com/trustgraph-ai/trustgraph
@@ -85,6 +85,7 @@ graph-embeddings-write-pinecone = "trustgraph.storage.graph_embeddings.pinecone:
85
85
  graph-embeddings-write-qdrant = "trustgraph.storage.graph_embeddings.qdrant:run"
86
86
  graph-embeddings = "trustgraph.embeddings.graph_embeddings:run"
87
87
  graph-rag = "trustgraph.retrieval.graph_rag:run"
88
+ image-to-text-openai = "trustgraph.model.image_to_text.openai:run"
88
89
  reranker-flashrank = "trustgraph.reranker.flashrank:run"
89
90
  kg-extract-agent = "trustgraph.extract.kg.agent:run"
90
91
  kg-extract-definitions = "trustgraph.extract.kg.definitions:run"
@@ -0,0 +1 @@
1
+ __version__ = "2.7.5"
@@ -0,0 +1,32 @@
1
+
2
+ from ... schema import ImageToTextRequest, ImageToTextResponse
3
+ from ... messaging import TranslatorRegistry
4
+
5
+ from . requestor import ServiceRequestor
6
+
7
+ class ImageToTextRequestor(ServiceRequestor):
8
+ def __init__(
9
+ self, backend, request_queue, response_queue, timeout,
10
+ consumer, subscriber,
11
+ ):
12
+
13
+ super(ImageToTextRequestor, self).__init__(
14
+ backend=backend,
15
+ request_queue=request_queue,
16
+ response_queue=response_queue,
17
+ request_schema=ImageToTextRequest,
18
+ response_schema=ImageToTextResponse,
19
+ subscription = subscriber,
20
+ consumer_name = consumer,
21
+ timeout=timeout,
22
+ )
23
+
24
+ self.request_translator = TranslatorRegistry.get_request_translator("image-to-text")
25
+ self.response_translator = TranslatorRegistry.get_response_translator("image-to-text")
26
+
27
+ def to_request(self, body):
28
+ return self.request_translator.decode(body)
29
+
30
+ def from_response(self, message):
31
+ return self.response_translator.encode_with_completion(message)
32
+
@@ -23,6 +23,7 @@ from . collection_management import CollectionManagementRequestor
23
23
  from . embeddings import EmbeddingsRequestor
24
24
  from . agent import AgentRequestor
25
25
  from . text_completion import TextCompletionRequestor
26
+ from . image_to_text import ImageToTextRequestor
26
27
  from . prompt import PromptRequestor
27
28
  from . graph_rag import GraphRagRequestor
28
29
  from . document_rag import DocumentRagRequestor
@@ -76,6 +77,7 @@ request_response_dispatchers = {
76
77
  "row-embeddings": RowEmbeddingsQueryRequestor,
77
78
  "sparql": SparqlQueryRequestor,
78
79
  "reranker": RerankerRequestor,
80
+ "image-to-text": ImageToTextRequestor,
79
81
  }
80
82
 
81
83
  system_dispatchers = {
@@ -519,6 +519,7 @@ _FLOW_SERVICES = {
519
519
  "row-embeddings": "row-embeddings:read",
520
520
  "sparql": "sparql:read",
521
521
  "reranker": "reranker",
522
+ "image-to-text": "image-to-text",
522
523
  }
523
524
  for _kind, _cap in _FLOW_SERVICES.items():
524
525
  _register_flow_kind("flow-service", _kind, _cap)
@@ -73,6 +73,7 @@ _READER_CAPS = {
73
73
  "llm",
74
74
  "embeddings",
75
75
  "reranker",
76
+ "image-to-text",
76
77
  "mcp",
77
78
  "config:read",
78
79
  "flows:read",
@@ -0,0 +1,172 @@
1
+
2
+ """
3
+ Simple image-to-text service, describes images using the OpenAI vision
4
+ API. Input is base64-encoded image, MIME type and prompt, output is
5
+ image description.
6
+ """
7
+
8
+ from openai import OpenAI, RateLimitError, InternalServerError
9
+ import os
10
+ import logging
11
+
12
+ from .... exceptions import TooManyRequests, LlmError
13
+ from .... base import ImageToTextService, ImageDescriptionResult
14
+
15
+ # Module logger
16
+ logger = logging.getLogger(__name__)
17
+
18
+ default_ident = "image-to-text"
19
+
20
+ default_model = 'gpt-5-mini'
21
+ default_max_output = 4096
22
+ default_api_key = os.getenv("OPENAI_TOKEN")
23
+ default_base_url = os.getenv("OPENAI_BASE_URL")
24
+ default_prompt = 'Describe this image'
25
+
26
+ if default_base_url is None or default_base_url == "":
27
+ default_base_url = "https://api.openai.com/v1"
28
+
29
+ class Processor(ImageToTextService):
30
+
31
+ def __init__(self, **params):
32
+
33
+ model = params.get("model", default_model)
34
+ api_key = params.get("api_key", default_api_key)
35
+ base_url = params.get("url", default_base_url)
36
+ max_output = params.get("max_output", default_max_output)
37
+
38
+ if not api_key:
39
+ api_key = "not-set"
40
+
41
+ super(Processor, self).__init__(
42
+ **params | {
43
+ "model": model,
44
+ "max_output": max_output,
45
+ "base_url": base_url,
46
+ }
47
+ )
48
+
49
+ self.default_model = model
50
+ self.max_output = max_output
51
+
52
+ if base_url:
53
+ self.openai = OpenAI(base_url=base_url, api_key=api_key)
54
+ else:
55
+ self.openai = OpenAI(api_key=api_key)
56
+
57
+ logger.info("OpenAI image-to-text service initialized")
58
+
59
+ async def describe_image(
60
+ self, image, mime_type, prompt, system, model=None,
61
+ ):
62
+
63
+ model_name = model or self.default_model
64
+
65
+ logger.debug(f"Using model: {model_name}")
66
+
67
+ if not prompt:
68
+ prompt = default_prompt
69
+
70
+ if system:
71
+ prompt = system + "\n\n" + prompt
72
+
73
+ try:
74
+
75
+ messages = [
76
+ {
77
+ "role": "user",
78
+ "content": [
79
+ {
80
+ "type": "text",
81
+ "text": prompt
82
+ },
83
+ {
84
+ "type": "image_url",
85
+ "image_url": {
86
+ "url": f"data:{mime_type};base64,{image}"
87
+ }
88
+ }
89
+ ]
90
+ }
91
+ ]
92
+
93
+ resp = self.openai.chat.completions.create(
94
+ model=model_name,
95
+ messages=messages,
96
+ max_completion_tokens=self.max_output,
97
+ )
98
+
99
+ inputtokens = resp.usage.prompt_tokens
100
+ outputtokens = resp.usage.completion_tokens
101
+
102
+ content = resp.choices[0].message.content
103
+
104
+ logger.debug(f"Image description: {content}")
105
+ logger.info(f"Input Tokens: {inputtokens}")
106
+ logger.info(f"Output Tokens: {outputtokens}")
107
+
108
+ resp = ImageDescriptionResult(
109
+ text = content,
110
+ in_token = inputtokens,
111
+ out_token = outputtokens,
112
+ model = model_name
113
+ )
114
+
115
+ return resp
116
+
117
+ except RateLimitError as e:
118
+ try:
119
+ body = getattr(e, 'body', {})
120
+ if isinstance(body, dict):
121
+ code = body.get('error', {}).get('code')
122
+ if code in ('insufficient_quota', 'invalid_api_key', 'account_deactivated'):
123
+ raise RuntimeError(f"OpenAI unrecoverable error: {code} - {body['error'].get('message', '')}")
124
+ except (ValueError, KeyError, TypeError, AttributeError):
125
+ pass
126
+ # Leave rate limit retries to the base handler
127
+ raise TooManyRequests()
128
+
129
+ except InternalServerError:
130
+ # Treat 503 as a retryable LlmError
131
+ raise LlmError()
132
+
133
+ except Exception as e:
134
+
135
+ # Apart from rate limits, treat all exceptions as unrecoverable
136
+
137
+ logger.error(f"OpenAI image-to-text exception ({type(e).__name__}): {e}", exc_info=True)
138
+ raise e
139
+
140
+ @staticmethod
141
+ def add_args(parser):
142
+
143
+ ImageToTextService.add_args(parser)
144
+
145
+ parser.add_argument(
146
+ '-m', '--model',
147
+ default=default_model,
148
+ help=f'Vision model (default: {default_model})'
149
+ )
150
+
151
+ parser.add_argument(
152
+ '-k', '--api-key',
153
+ default=default_api_key,
154
+ help=f'OpenAI API key'
155
+ )
156
+
157
+ parser.add_argument(
158
+ '-u', '--url',
159
+ default=default_base_url,
160
+ help=f'OpenAI service base URL'
161
+ )
162
+
163
+ parser.add_argument(
164
+ '-x', '--max-output',
165
+ type=int,
166
+ default=default_max_output,
167
+ help=f'Vision model max output tokens (default: {default_max_output})'
168
+ )
169
+
170
+ def run():
171
+
172
+ Processor.launch(default_ident, __doc__)
@@ -55,7 +55,10 @@ class Processor(LlmService):
55
55
  self.max_output = max_output
56
56
  self.default_model = model
57
57
 
58
- def build_prompt(self, system, content, temperature=None, stream=False, model=None):
58
+ def build_prompt(
59
+ self, system, content, temperature=None, stream=False,
60
+ model=None, response_format=None, schema=None,
61
+ ):
59
62
  # Use provided temperature or fall back to default
60
63
  effective_temperature = temperature if temperature is not None else self.temperature
61
64
  model_name = model or self.default_model
@@ -79,6 +82,17 @@ class Processor(LlmService):
79
82
  data["stream"] = True
80
83
  data["stream_options"] = {"include_usage": True}
81
84
 
85
+ if response_format == "json" and schema is not None:
86
+ data["response_format"] = {
87
+ "type": "json_schema",
88
+ "json_schema": {
89
+ "name": "response",
90
+ "schema": schema,
91
+ "strict": True,
92
+ },
93
+ }
94
+ logger.debug("Structured output enabled")
95
+
82
96
  body = json.dumps(data)
83
97
 
84
98
  return body
@@ -109,7 +123,10 @@ class Processor(LlmService):
109
123
 
110
124
  return result
111
125
 
112
- async def generate_content(self, system, prompt, model=None, temperature=None):
126
+ async def generate_content(
127
+ self, system, prompt, model=None, temperature=None,
128
+ response_format=None, schema=None,
129
+ ):
113
130
 
114
131
  # Use provided model or fall back to default
115
132
  model_name = model or self.default_model
@@ -125,7 +142,9 @@ class Processor(LlmService):
125
142
  system,
126
143
  prompt,
127
144
  effective_temperature,
128
- model=model_name
145
+ model=model_name,
146
+ response_format=response_format,
147
+ schema=schema,
129
148
  )
130
149
 
131
150
  response = self.call_llm(prompt)
@@ -169,7 +188,10 @@ class Processor(LlmService):
169
188
  """Azure serverless endpoints support streaming"""
170
189
  return True
171
190
 
172
- async def generate_content_stream(self, system, prompt, model=None, temperature=None):
191
+ async def generate_content_stream(
192
+ self, system, prompt, model=None, temperature=None,
193
+ response_format=None, schema=None,
194
+ ):
173
195
  """Stream content generation from Azure serverless endpoint"""
174
196
  model_name = model or self.default_model
175
197
  effective_temperature = temperature if temperature is not None else self.temperature
@@ -178,7 +200,11 @@ class Processor(LlmService):
178
200
  logger.debug(f"Using temperature: {effective_temperature}")
179
201
 
180
202
  try:
181
- body = self.build_prompt(system, prompt, effective_temperature, stream=True, model=model_name)
203
+ body = self.build_prompt(
204
+ system, prompt, effective_temperature, stream=True,
205
+ model=model_name, response_format=response_format,
206
+ schema=schema,
207
+ )
182
208
 
183
209
  url = self.endpoint
184
210
  api_key = self.token
@@ -62,7 +62,10 @@ class Processor(LlmService):
62
62
  azure_endpoint = endpoint,
63
63
  )
64
64
 
65
- async def generate_content(self, system, prompt, model=None, temperature=None):
65
+ async def generate_content(
66
+ self, system, prompt, model=None, temperature=None,
67
+ response_format=None, schema=None,
68
+ ):
66
69
 
67
70
  # Use provided model or fall back to default
68
71
  model_name = model or self.default_model
@@ -76,6 +79,18 @@ class Processor(LlmService):
76
79
 
77
80
  try:
78
81
 
82
+ kwargs = {}
83
+ if response_format == "json" and schema is not None:
84
+ kwargs["response_format"] = {
85
+ "type": "json_schema",
86
+ "json_schema": {
87
+ "name": "response",
88
+ "schema": schema,
89
+ "strict": True,
90
+ },
91
+ }
92
+ logger.debug("Structured output enabled")
93
+
79
94
  resp = self.openai.chat.completions.create(
80
95
  model=model_name,
81
96
  messages=[
@@ -92,6 +107,7 @@ class Processor(LlmService):
92
107
  temperature=effective_temperature,
93
108
  max_completion_tokens=self.max_output,
94
109
  top_p=1,
110
+ **kwargs,
95
111
  )
96
112
 
97
113
  inputtokens = resp.usage.prompt_tokens
@@ -129,7 +145,10 @@ class Processor(LlmService):
129
145
  """Azure OpenAI supports streaming"""
130
146
  return True
131
147
 
132
- async def generate_content_stream(self, system, prompt, model=None, temperature=None):
148
+ async def generate_content_stream(
149
+ self, system, prompt, model=None, temperature=None,
150
+ response_format=None, schema=None,
151
+ ):
133
152
  """
134
153
  Stream content generation from Azure OpenAI.
135
154
  Yields LlmChunk objects with is_final=True on the last chunk.
@@ -48,7 +48,10 @@ class Processor(LlmService):
48
48
 
49
49
  logger.info("Claude LLM service initialized")
50
50
 
51
- async def generate_content(self, system, prompt, model=None, temperature=None):
51
+ async def generate_content(
52
+ self, system, prompt, model=None, temperature=None,
53
+ response_format=None, schema=None,
54
+ ):
52
55
 
53
56
  # Use provided model or fall back to default
54
57
  model_name = model or self.default_model
@@ -60,11 +63,27 @@ class Processor(LlmService):
60
63
 
61
64
  try:
62
65
 
66
+ kwargs = {}
67
+ use_tool_extract = False
68
+
69
+ if response_format == "json" and schema is not None:
70
+ kwargs["tools"] = [{
71
+ "name": "structured_response",
72
+ "description": "Return the structured response",
73
+ "input_schema": schema,
74
+ }]
75
+ kwargs["tool_choice"] = {
76
+ "type": "tool",
77
+ "name": "structured_response",
78
+ }
79
+ use_tool_extract = True
80
+ logger.debug("Structured output enabled (tool-use)")
81
+
63
82
  response = message = self.claude.messages.create(
64
83
  model=model_name,
65
84
  max_tokens=self.max_output,
66
85
  temperature=effective_temperature,
67
- system = system,
86
+ system=system,
68
87
  messages=[
69
88
  {
70
89
  "role": "user",
@@ -75,10 +94,22 @@ class Processor(LlmService):
75
94
  }
76
95
  ]
77
96
  }
78
- ]
97
+ ],
98
+ **kwargs,
79
99
  )
80
100
 
81
- resp = response.content[0].text
101
+ if use_tool_extract:
102
+ import json
103
+ tool_block = next(
104
+ (b for b in response.content if b.type == "tool_use"),
105
+ None,
106
+ )
107
+ if tool_block:
108
+ resp = json.dumps(tool_block.input)
109
+ else:
110
+ resp = response.content[0].text
111
+ else:
112
+ resp = response.content[0].text
82
113
  inputtokens = response.usage.input_tokens
83
114
  outputtokens = response.usage.output_tokens
84
115
  logger.debug(f"LLM response: {resp}")
@@ -110,7 +141,10 @@ class Processor(LlmService):
110
141
  """Claude/Anthropic supports streaming"""
111
142
  return True
112
143
 
113
- async def generate_content_stream(self, system, prompt, model=None, temperature=None):
144
+ async def generate_content_stream(
145
+ self, system, prompt, model=None, temperature=None,
146
+ response_format=None, schema=None,
147
+ ):
114
148
  """Stream content generation from Claude"""
115
149
  model_name = model or self.default_model
116
150
  effective_temperature = temperature if temperature is not None else self.temperature
@@ -46,7 +46,10 @@ class Processor(LlmService):
46
46
 
47
47
  logger.info("Cohere LLM service initialized")
48
48
 
49
- async def generate_content(self, system, prompt, model=None, temperature=None):
49
+ async def generate_content(
50
+ self, system, prompt, model=None, temperature=None,
51
+ response_format=None, schema=None,
52
+ ):
50
53
 
51
54
  # Use provided model or fall back to default
52
55
  model_name = model or self.default_model
@@ -104,7 +107,10 @@ class Processor(LlmService):
104
107
  """Cohere supports streaming"""
105
108
  return True
106
109
 
107
- async def generate_content_stream(self, system, prompt, model=None, temperature=None):
110
+ async def generate_content_stream(
111
+ self, system, prompt, model=None, temperature=None,
112
+ response_format=None, schema=None,
113
+ ):
108
114
  """Stream content generation from Cohere"""
109
115
  model_name = model or self.default_model
110
116
  effective_temperature = temperature if temperature is not None else self.temperature
@@ -50,7 +50,10 @@ class Processor(LlmService):
50
50
 
51
51
  logger.info("Llamafile LLM service initialized")
52
52
 
53
- async def generate_content(self, system, prompt, model=None, temperature=None):
53
+ async def generate_content(
54
+ self, system, prompt, model=None, temperature=None,
55
+ response_format=None, schema=None,
56
+ ):
54
57
 
55
58
  # Use provided model or fall back to default
56
59
  model_name = model or self.default_model
@@ -64,6 +67,18 @@ class Processor(LlmService):
64
67
 
65
68
  try:
66
69
 
70
+ if response_format == "json" and schema is not None:
71
+ fmt = {
72
+ "type": "json_schema",
73
+ "json_schema": {
74
+ "name": "response",
75
+ "schema": schema,
76
+ },
77
+ }
78
+ logger.debug("Structured output enabled")
79
+ else:
80
+ fmt = {"type": "text"}
81
+
67
82
  resp = self.openai.chat.completions.create(
68
83
  model=model_name,
69
84
  messages=[
@@ -74,9 +89,7 @@ class Processor(LlmService):
74
89
  top_p=1,
75
90
  frequency_penalty=0,
76
91
  presence_penalty=0,
77
- response_format={
78
- "type": "text"
79
- }
92
+ response_format=fmt,
80
93
  )
81
94
 
82
95
  inputtokens = resp.usage.prompt_tokens
@@ -106,7 +119,10 @@ class Processor(LlmService):
106
119
  """LlamaFile supports streaming"""
107
120
  return True
108
121
 
109
- async def generate_content_stream(self, system, prompt, model=None, temperature=None):
122
+ async def generate_content_stream(
123
+ self, system, prompt, model=None, temperature=None,
124
+ response_format=None, schema=None,
125
+ ):
110
126
  """Stream content generation from LlamaFile"""
111
127
  model_name = model or self.default_model
112
128
  effective_temperature = temperature if temperature is not None else self.temperature
@@ -117,6 +133,18 @@ class Processor(LlmService):
117
133
  prompt = system + "\n\n" + prompt
118
134
 
119
135
  try:
136
+ if response_format == "json" and schema is not None:
137
+ fmt = {
138
+ "type": "json_schema",
139
+ "json_schema": {
140
+ "name": "response",
141
+ "schema": schema,
142
+ },
143
+ }
144
+ logger.debug("Structured output enabled (streaming)")
145
+ else:
146
+ fmt = {"type": "text"}
147
+
120
148
  response = self.openai.chat.completions.create(
121
149
  model=model_name,
122
150
  messages=[{"role": "user", "content": prompt}],
@@ -125,7 +153,7 @@ class Processor(LlmService):
125
153
  top_p=1,
126
154
  frequency_penalty=0,
127
155
  presence_penalty=0,
128
- response_format={"type": "text"},
156
+ response_format=fmt,
129
157
  stream=True,
130
158
  stream_options={"include_usage": True}
131
159
  )
@@ -50,7 +50,10 @@ class Processor(LlmService):
50
50
 
51
51
  logger.info("LMStudio LLM service initialized")
52
52
 
53
- async def generate_content(self, system, prompt, model=None, temperature=None):
53
+ async def generate_content(
54
+ self, system, prompt, model=None, temperature=None,
55
+ response_format=None, schema=None,
56
+ ):
54
57
 
55
58
  # Use provided model or fall back to default
56
59
  model_name = model or self.default_model
@@ -66,6 +69,18 @@ class Processor(LlmService):
66
69
 
67
70
  logger.debug(f"Prompt: {prompt}")
68
71
 
72
+ if response_format == "json" and schema is not None:
73
+ fmt = {
74
+ "type": "json_schema",
75
+ "json_schema": {
76
+ "name": "response",
77
+ "schema": schema,
78
+ },
79
+ }
80
+ logger.debug("Structured output enabled")
81
+ else:
82
+ fmt = {"type": "text"}
83
+
69
84
  resp = self.openai.chat.completions.create(
70
85
  model=model_name,
71
86
  messages=[
@@ -76,9 +91,7 @@ class Processor(LlmService):
76
91
  top_p=1,
77
92
  frequency_penalty=0,
78
93
  presence_penalty=0,
79
- response_format={
80
- "type": "text"
81
- }
94
+ response_format=fmt,
82
95
  )
83
96
 
84
97
  logger.debug(f"Full response: {resp}")
@@ -110,7 +123,10 @@ class Processor(LlmService):
110
123
  """LM Studio supports streaming"""
111
124
  return True
112
125
 
113
- async def generate_content_stream(self, system, prompt, model=None, temperature=None):
126
+ async def generate_content_stream(
127
+ self, system, prompt, model=None, temperature=None,
128
+ response_format=None, schema=None,
129
+ ):
114
130
  """Stream content generation from LM Studio"""
115
131
  model_name = model or self.default_model
116
132
  effective_temperature = temperature if temperature is not None else self.temperature
@@ -121,6 +137,18 @@ class Processor(LlmService):
121
137
  prompt = system + "\n\n" + prompt
122
138
 
123
139
  try:
140
+ if response_format == "json" and schema is not None:
141
+ fmt = {
142
+ "type": "json_schema",
143
+ "json_schema": {
144
+ "name": "response",
145
+ "schema": schema,
146
+ },
147
+ }
148
+ logger.debug("Structured output enabled (streaming)")
149
+ else:
150
+ fmt = {"type": "text"}
151
+
124
152
  response = self.openai.chat.completions.create(
125
153
  model=model_name,
126
154
  messages=[{"role": "user", "content": prompt}],
@@ -129,7 +157,7 @@ class Processor(LlmService):
129
157
  top_p=1,
130
158
  frequency_penalty=0,
131
159
  presence_penalty=0,
132
- response_format={"type": "text"},
160
+ response_format=fmt,
133
161
  stream=True,
134
162
  stream_options={"include_usage": True}
135
163
  )