llama-stack 0.3.5__py3-none-any.whl → 0.4.0__py3-none-any.whl

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 (458) hide show
  1. llama_stack/__init__.py +0 -5
  2. llama_stack/cli/llama.py +3 -3
  3. llama_stack/cli/stack/_list_deps.py +12 -23
  4. llama_stack/cli/stack/list_stacks.py +37 -18
  5. llama_stack/cli/stack/run.py +121 -11
  6. llama_stack/cli/stack/utils.py +0 -127
  7. llama_stack/core/access_control/access_control.py +69 -28
  8. llama_stack/core/access_control/conditions.py +15 -5
  9. llama_stack/core/admin.py +267 -0
  10. llama_stack/core/build.py +6 -74
  11. llama_stack/core/client.py +1 -1
  12. llama_stack/core/configure.py +6 -6
  13. llama_stack/core/conversations/conversations.py +28 -25
  14. llama_stack/core/datatypes.py +271 -79
  15. llama_stack/core/distribution.py +15 -16
  16. llama_stack/core/external.py +3 -3
  17. llama_stack/core/inspect.py +98 -15
  18. llama_stack/core/library_client.py +73 -61
  19. llama_stack/core/prompts/prompts.py +12 -11
  20. llama_stack/core/providers.py +17 -11
  21. llama_stack/core/resolver.py +65 -56
  22. llama_stack/core/routers/__init__.py +8 -12
  23. llama_stack/core/routers/datasets.py +1 -4
  24. llama_stack/core/routers/eval_scoring.py +7 -4
  25. llama_stack/core/routers/inference.py +55 -271
  26. llama_stack/core/routers/safety.py +52 -24
  27. llama_stack/core/routers/tool_runtime.py +6 -48
  28. llama_stack/core/routers/vector_io.py +130 -51
  29. llama_stack/core/routing_tables/benchmarks.py +24 -20
  30. llama_stack/core/routing_tables/common.py +1 -4
  31. llama_stack/core/routing_tables/datasets.py +22 -22
  32. llama_stack/core/routing_tables/models.py +119 -6
  33. llama_stack/core/routing_tables/scoring_functions.py +7 -7
  34. llama_stack/core/routing_tables/shields.py +1 -2
  35. llama_stack/core/routing_tables/toolgroups.py +17 -7
  36. llama_stack/core/routing_tables/vector_stores.py +51 -16
  37. llama_stack/core/server/auth.py +5 -3
  38. llama_stack/core/server/auth_providers.py +36 -20
  39. llama_stack/core/server/fastapi_router_registry.py +84 -0
  40. llama_stack/core/server/quota.py +2 -2
  41. llama_stack/core/server/routes.py +79 -27
  42. llama_stack/core/server/server.py +102 -87
  43. llama_stack/core/stack.py +201 -58
  44. llama_stack/core/storage/datatypes.py +26 -3
  45. llama_stack/{providers/utils → core/storage}/kvstore/__init__.py +2 -0
  46. llama_stack/{providers/utils → core/storage}/kvstore/kvstore.py +55 -24
  47. llama_stack/{providers/utils → core/storage}/kvstore/mongodb/mongodb.py +13 -10
  48. llama_stack/{providers/utils → core/storage}/kvstore/postgres/postgres.py +28 -17
  49. llama_stack/{providers/utils → core/storage}/kvstore/redis/redis.py +41 -16
  50. llama_stack/{providers/utils → core/storage}/kvstore/sqlite/sqlite.py +1 -1
  51. llama_stack/core/storage/sqlstore/__init__.py +17 -0
  52. llama_stack/{providers/utils → core/storage}/sqlstore/authorized_sqlstore.py +69 -49
  53. llama_stack/{providers/utils → core/storage}/sqlstore/sqlalchemy_sqlstore.py +47 -17
  54. llama_stack/{providers/utils → core/storage}/sqlstore/sqlstore.py +25 -8
  55. llama_stack/core/store/registry.py +1 -1
  56. llama_stack/core/utils/config.py +8 -2
  57. llama_stack/core/utils/config_resolution.py +32 -29
  58. llama_stack/core/utils/context.py +4 -10
  59. llama_stack/core/utils/exec.py +9 -0
  60. llama_stack/core/utils/type_inspection.py +45 -0
  61. llama_stack/distributions/dell/{run.yaml → config.yaml} +3 -2
  62. llama_stack/distributions/dell/dell.py +2 -2
  63. llama_stack/distributions/dell/run-with-safety.yaml +3 -2
  64. llama_stack/distributions/meta-reference-gpu/{run.yaml → config.yaml} +3 -2
  65. llama_stack/distributions/meta-reference-gpu/meta_reference.py +2 -2
  66. llama_stack/distributions/meta-reference-gpu/run-with-safety.yaml +3 -2
  67. llama_stack/distributions/nvidia/{run.yaml → config.yaml} +4 -4
  68. llama_stack/distributions/nvidia/nvidia.py +1 -1
  69. llama_stack/distributions/nvidia/run-with-safety.yaml +4 -4
  70. llama_stack/{apis/datasetio → distributions/oci}/__init__.py +1 -1
  71. llama_stack/distributions/oci/config.yaml +134 -0
  72. llama_stack/distributions/oci/oci.py +108 -0
  73. llama_stack/distributions/open-benchmark/{run.yaml → config.yaml} +5 -4
  74. llama_stack/distributions/open-benchmark/open_benchmark.py +2 -3
  75. llama_stack/distributions/postgres-demo/{run.yaml → config.yaml} +4 -3
  76. llama_stack/distributions/starter/{run.yaml → config.yaml} +64 -13
  77. llama_stack/distributions/starter/run-with-postgres-store.yaml +64 -13
  78. llama_stack/distributions/starter/starter.py +8 -5
  79. llama_stack/distributions/starter-gpu/{run.yaml → config.yaml} +64 -13
  80. llama_stack/distributions/starter-gpu/run-with-postgres-store.yaml +64 -13
  81. llama_stack/distributions/template.py +13 -69
  82. llama_stack/distributions/watsonx/{run.yaml → config.yaml} +4 -3
  83. llama_stack/distributions/watsonx/watsonx.py +1 -1
  84. llama_stack/log.py +28 -11
  85. llama_stack/models/llama/checkpoint.py +6 -6
  86. llama_stack/models/llama/hadamard_utils.py +2 -0
  87. llama_stack/models/llama/llama3/generation.py +3 -1
  88. llama_stack/models/llama/llama3/interface.py +2 -5
  89. llama_stack/models/llama/llama3/multimodal/encoder_utils.py +3 -3
  90. llama_stack/models/llama/llama3/multimodal/image_transform.py +6 -6
  91. llama_stack/models/llama/llama3/prompt_templates/system_prompts.py +1 -1
  92. llama_stack/models/llama/llama3/tool_utils.py +2 -1
  93. llama_stack/models/llama/llama4/prompt_templates/system_prompts.py +1 -1
  94. llama_stack/providers/inline/agents/meta_reference/__init__.py +3 -3
  95. llama_stack/providers/inline/agents/meta_reference/agents.py +44 -261
  96. llama_stack/providers/inline/agents/meta_reference/config.py +6 -1
  97. llama_stack/providers/inline/agents/meta_reference/responses/openai_responses.py +207 -57
  98. llama_stack/providers/inline/agents/meta_reference/responses/streaming.py +308 -47
  99. llama_stack/providers/inline/agents/meta_reference/responses/tool_executor.py +162 -96
  100. llama_stack/providers/inline/agents/meta_reference/responses/types.py +23 -8
  101. llama_stack/providers/inline/agents/meta_reference/responses/utils.py +201 -33
  102. llama_stack/providers/inline/agents/meta_reference/safety.py +8 -13
  103. llama_stack/providers/inline/batches/reference/__init__.py +2 -4
  104. llama_stack/providers/inline/batches/reference/batches.py +78 -60
  105. llama_stack/providers/inline/datasetio/localfs/datasetio.py +2 -5
  106. llama_stack/providers/inline/eval/meta_reference/eval.py +16 -61
  107. llama_stack/providers/inline/files/localfs/files.py +37 -28
  108. llama_stack/providers/inline/inference/meta_reference/config.py +2 -2
  109. llama_stack/providers/inline/inference/meta_reference/generators.py +50 -60
  110. llama_stack/providers/inline/inference/meta_reference/inference.py +403 -19
  111. llama_stack/providers/inline/inference/meta_reference/model_parallel.py +7 -26
  112. llama_stack/providers/inline/inference/meta_reference/parallel_utils.py +2 -12
  113. llama_stack/providers/inline/inference/sentence_transformers/sentence_transformers.py +10 -15
  114. llama_stack/providers/inline/post_training/common/validator.py +1 -5
  115. llama_stack/providers/inline/post_training/huggingface/post_training.py +8 -8
  116. llama_stack/providers/inline/post_training/huggingface/recipes/finetune_single_device.py +18 -10
  117. llama_stack/providers/inline/post_training/huggingface/recipes/finetune_single_device_dpo.py +12 -9
  118. llama_stack/providers/inline/post_training/huggingface/utils.py +27 -6
  119. llama_stack/providers/inline/post_training/torchtune/common/checkpointer.py +1 -1
  120. llama_stack/providers/inline/post_training/torchtune/common/utils.py +1 -1
  121. llama_stack/providers/inline/post_training/torchtune/datasets/format_adapter.py +1 -1
  122. llama_stack/providers/inline/post_training/torchtune/post_training.py +8 -8
  123. llama_stack/providers/inline/post_training/torchtune/recipes/lora_finetuning_single_device.py +16 -16
  124. llama_stack/providers/inline/safety/code_scanner/code_scanner.py +13 -9
  125. llama_stack/providers/inline/safety/llama_guard/llama_guard.py +18 -15
  126. llama_stack/providers/inline/safety/prompt_guard/prompt_guard.py +9 -9
  127. llama_stack/providers/inline/scoring/basic/scoring.py +6 -13
  128. llama_stack/providers/inline/scoring/basic/scoring_fn/docvqa_scoring_fn.py +1 -2
  129. llama_stack/providers/inline/scoring/basic/scoring_fn/equality_scoring_fn.py +1 -2
  130. llama_stack/providers/inline/scoring/basic/scoring_fn/fn_defs/docvqa.py +2 -2
  131. llama_stack/providers/inline/scoring/basic/scoring_fn/fn_defs/equality.py +2 -2
  132. llama_stack/providers/inline/scoring/basic/scoring_fn/fn_defs/ifeval.py +2 -2
  133. llama_stack/providers/inline/scoring/basic/scoring_fn/fn_defs/regex_parser_math_response.py +2 -2
  134. llama_stack/providers/inline/scoring/basic/scoring_fn/fn_defs/regex_parser_multiple_choice_answer.py +2 -2
  135. llama_stack/providers/inline/scoring/basic/scoring_fn/fn_defs/subset_of.py +2 -2
  136. llama_stack/providers/inline/scoring/basic/scoring_fn/ifeval_scoring_fn.py +1 -2
  137. llama_stack/providers/inline/scoring/basic/scoring_fn/regex_parser_math_response_scoring_fn.py +1 -2
  138. llama_stack/providers/inline/scoring/basic/scoring_fn/regex_parser_scoring_fn.py +1 -2
  139. llama_stack/providers/inline/scoring/basic/scoring_fn/subset_of_scoring_fn.py +1 -2
  140. llama_stack/providers/inline/scoring/braintrust/braintrust.py +12 -15
  141. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/answer_correctness.py +2 -2
  142. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/answer_relevancy.py +2 -2
  143. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/answer_similarity.py +2 -2
  144. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/context_entity_recall.py +2 -2
  145. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/context_precision.py +2 -2
  146. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/context_recall.py +2 -2
  147. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/context_relevancy.py +2 -2
  148. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/factuality.py +2 -2
  149. llama_stack/providers/inline/scoring/braintrust/scoring_fn/fn_defs/faithfulness.py +2 -2
  150. llama_stack/providers/inline/scoring/llm_as_judge/scoring.py +7 -14
  151. llama_stack/providers/inline/scoring/llm_as_judge/scoring_fn/fn_defs/llm_as_judge_405b_simpleqa.py +2 -2
  152. llama_stack/providers/inline/scoring/llm_as_judge/scoring_fn/fn_defs/llm_as_judge_base.py +1 -2
  153. llama_stack/providers/inline/scoring/llm_as_judge/scoring_fn/llm_as_judge_scoring_fn.py +1 -3
  154. llama_stack/providers/inline/tool_runtime/rag/__init__.py +1 -1
  155. llama_stack/providers/inline/tool_runtime/rag/config.py +8 -1
  156. llama_stack/providers/inline/tool_runtime/rag/context_retriever.py +7 -6
  157. llama_stack/providers/inline/tool_runtime/rag/memory.py +64 -48
  158. llama_stack/providers/inline/vector_io/chroma/__init__.py +1 -1
  159. llama_stack/providers/inline/vector_io/chroma/config.py +1 -1
  160. llama_stack/providers/inline/vector_io/faiss/__init__.py +1 -1
  161. llama_stack/providers/inline/vector_io/faiss/config.py +1 -1
  162. llama_stack/providers/inline/vector_io/faiss/faiss.py +43 -28
  163. llama_stack/providers/inline/vector_io/milvus/__init__.py +1 -1
  164. llama_stack/providers/inline/vector_io/milvus/config.py +1 -1
  165. llama_stack/providers/inline/vector_io/qdrant/__init__.py +1 -1
  166. llama_stack/providers/inline/vector_io/qdrant/config.py +1 -1
  167. llama_stack/providers/inline/vector_io/sqlite_vec/__init__.py +1 -1
  168. llama_stack/providers/inline/vector_io/sqlite_vec/sqlite_vec.py +40 -33
  169. llama_stack/providers/registry/agents.py +7 -3
  170. llama_stack/providers/registry/batches.py +1 -1
  171. llama_stack/providers/registry/datasetio.py +1 -1
  172. llama_stack/providers/registry/eval.py +1 -1
  173. llama_stack/{apis/datasets/__init__.py → providers/registry/file_processors.py} +5 -1
  174. llama_stack/providers/registry/files.py +11 -2
  175. llama_stack/providers/registry/inference.py +22 -3
  176. llama_stack/providers/registry/post_training.py +1 -1
  177. llama_stack/providers/registry/safety.py +1 -1
  178. llama_stack/providers/registry/scoring.py +1 -1
  179. llama_stack/providers/registry/tool_runtime.py +2 -2
  180. llama_stack/providers/registry/vector_io.py +7 -7
  181. llama_stack/providers/remote/datasetio/huggingface/huggingface.py +2 -5
  182. llama_stack/providers/remote/datasetio/nvidia/datasetio.py +1 -4
  183. llama_stack/providers/remote/eval/nvidia/eval.py +15 -9
  184. llama_stack/providers/remote/files/openai/__init__.py +19 -0
  185. llama_stack/providers/remote/files/openai/config.py +28 -0
  186. llama_stack/providers/remote/files/openai/files.py +253 -0
  187. llama_stack/providers/remote/files/s3/files.py +52 -30
  188. llama_stack/providers/remote/inference/anthropic/anthropic.py +2 -1
  189. llama_stack/providers/remote/inference/anthropic/config.py +1 -1
  190. llama_stack/providers/remote/inference/azure/azure.py +1 -3
  191. llama_stack/providers/remote/inference/azure/config.py +8 -7
  192. llama_stack/providers/remote/inference/bedrock/__init__.py +1 -1
  193. llama_stack/providers/remote/inference/bedrock/bedrock.py +82 -105
  194. llama_stack/providers/remote/inference/bedrock/config.py +24 -3
  195. llama_stack/providers/remote/inference/cerebras/cerebras.py +5 -5
  196. llama_stack/providers/remote/inference/cerebras/config.py +12 -5
  197. llama_stack/providers/remote/inference/databricks/config.py +13 -6
  198. llama_stack/providers/remote/inference/databricks/databricks.py +16 -6
  199. llama_stack/providers/remote/inference/fireworks/config.py +5 -5
  200. llama_stack/providers/remote/inference/fireworks/fireworks.py +1 -1
  201. llama_stack/providers/remote/inference/gemini/config.py +1 -1
  202. llama_stack/providers/remote/inference/gemini/gemini.py +13 -14
  203. llama_stack/providers/remote/inference/groq/config.py +5 -5
  204. llama_stack/providers/remote/inference/groq/groq.py +1 -1
  205. llama_stack/providers/remote/inference/llama_openai_compat/config.py +5 -5
  206. llama_stack/providers/remote/inference/llama_openai_compat/llama.py +8 -6
  207. llama_stack/providers/remote/inference/nvidia/__init__.py +1 -1
  208. llama_stack/providers/remote/inference/nvidia/config.py +21 -11
  209. llama_stack/providers/remote/inference/nvidia/nvidia.py +115 -3
  210. llama_stack/providers/remote/inference/nvidia/utils.py +1 -1
  211. llama_stack/providers/remote/inference/oci/__init__.py +17 -0
  212. llama_stack/providers/remote/inference/oci/auth.py +79 -0
  213. llama_stack/providers/remote/inference/oci/config.py +75 -0
  214. llama_stack/providers/remote/inference/oci/oci.py +162 -0
  215. llama_stack/providers/remote/inference/ollama/config.py +7 -5
  216. llama_stack/providers/remote/inference/ollama/ollama.py +17 -8
  217. llama_stack/providers/remote/inference/openai/config.py +4 -4
  218. llama_stack/providers/remote/inference/openai/openai.py +1 -1
  219. llama_stack/providers/remote/inference/passthrough/__init__.py +2 -2
  220. llama_stack/providers/remote/inference/passthrough/config.py +5 -10
  221. llama_stack/providers/remote/inference/passthrough/passthrough.py +97 -75
  222. llama_stack/providers/remote/inference/runpod/config.py +12 -5
  223. llama_stack/providers/remote/inference/runpod/runpod.py +2 -20
  224. llama_stack/providers/remote/inference/sambanova/config.py +5 -5
  225. llama_stack/providers/remote/inference/sambanova/sambanova.py +1 -1
  226. llama_stack/providers/remote/inference/tgi/config.py +7 -6
  227. llama_stack/providers/remote/inference/tgi/tgi.py +19 -11
  228. llama_stack/providers/remote/inference/together/config.py +5 -5
  229. llama_stack/providers/remote/inference/together/together.py +15 -12
  230. llama_stack/providers/remote/inference/vertexai/config.py +1 -1
  231. llama_stack/providers/remote/inference/vllm/config.py +5 -5
  232. llama_stack/providers/remote/inference/vllm/vllm.py +13 -14
  233. llama_stack/providers/remote/inference/watsonx/config.py +4 -4
  234. llama_stack/providers/remote/inference/watsonx/watsonx.py +21 -94
  235. llama_stack/providers/remote/post_training/nvidia/post_training.py +4 -4
  236. llama_stack/providers/remote/post_training/nvidia/utils.py +1 -1
  237. llama_stack/providers/remote/safety/bedrock/bedrock.py +6 -6
  238. llama_stack/providers/remote/safety/bedrock/config.py +1 -1
  239. llama_stack/providers/remote/safety/nvidia/config.py +1 -1
  240. llama_stack/providers/remote/safety/nvidia/nvidia.py +11 -5
  241. llama_stack/providers/remote/safety/sambanova/config.py +1 -1
  242. llama_stack/providers/remote/safety/sambanova/sambanova.py +6 -6
  243. llama_stack/providers/remote/tool_runtime/bing_search/bing_search.py +11 -6
  244. llama_stack/providers/remote/tool_runtime/brave_search/brave_search.py +12 -7
  245. llama_stack/providers/remote/tool_runtime/model_context_protocol/config.py +8 -2
  246. llama_stack/providers/remote/tool_runtime/model_context_protocol/model_context_protocol.py +57 -15
  247. llama_stack/providers/remote/tool_runtime/tavily_search/tavily_search.py +11 -6
  248. llama_stack/providers/remote/tool_runtime/wolfram_alpha/wolfram_alpha.py +11 -6
  249. llama_stack/providers/remote/vector_io/chroma/__init__.py +1 -1
  250. llama_stack/providers/remote/vector_io/chroma/chroma.py +125 -20
  251. llama_stack/providers/remote/vector_io/chroma/config.py +1 -1
  252. llama_stack/providers/remote/vector_io/milvus/__init__.py +1 -1
  253. llama_stack/providers/remote/vector_io/milvus/config.py +1 -1
  254. llama_stack/providers/remote/vector_io/milvus/milvus.py +27 -21
  255. llama_stack/providers/remote/vector_io/pgvector/__init__.py +1 -1
  256. llama_stack/providers/remote/vector_io/pgvector/config.py +1 -1
  257. llama_stack/providers/remote/vector_io/pgvector/pgvector.py +26 -18
  258. llama_stack/providers/remote/vector_io/qdrant/__init__.py +1 -1
  259. llama_stack/providers/remote/vector_io/qdrant/config.py +1 -1
  260. llama_stack/providers/remote/vector_io/qdrant/qdrant.py +141 -24
  261. llama_stack/providers/remote/vector_io/weaviate/__init__.py +1 -1
  262. llama_stack/providers/remote/vector_io/weaviate/config.py +1 -1
  263. llama_stack/providers/remote/vector_io/weaviate/weaviate.py +26 -21
  264. llama_stack/providers/utils/common/data_schema_validator.py +1 -5
  265. llama_stack/providers/utils/files/form_data.py +1 -1
  266. llama_stack/providers/utils/inference/embedding_mixin.py +1 -1
  267. llama_stack/providers/utils/inference/inference_store.py +7 -8
  268. llama_stack/providers/utils/inference/litellm_openai_mixin.py +79 -79
  269. llama_stack/providers/utils/inference/model_registry.py +1 -3
  270. llama_stack/providers/utils/inference/openai_compat.py +44 -1171
  271. llama_stack/providers/utils/inference/openai_mixin.py +68 -42
  272. llama_stack/providers/utils/inference/prompt_adapter.py +50 -265
  273. llama_stack/providers/utils/inference/stream_utils.py +23 -0
  274. llama_stack/providers/utils/memory/__init__.py +2 -0
  275. llama_stack/providers/utils/memory/file_utils.py +1 -1
  276. llama_stack/providers/utils/memory/openai_vector_store_mixin.py +181 -84
  277. llama_stack/providers/utils/memory/vector_store.py +39 -38
  278. llama_stack/providers/utils/pagination.py +1 -1
  279. llama_stack/providers/utils/responses/responses_store.py +15 -25
  280. llama_stack/providers/utils/scoring/aggregation_utils.py +1 -2
  281. llama_stack/providers/utils/scoring/base_scoring_fn.py +1 -2
  282. llama_stack/providers/utils/tools/mcp.py +93 -11
  283. llama_stack/telemetry/constants.py +27 -0
  284. llama_stack/telemetry/helpers.py +43 -0
  285. llama_stack/testing/api_recorder.py +25 -16
  286. {llama_stack-0.3.5.dist-info → llama_stack-0.4.0.dist-info}/METADATA +56 -54
  287. llama_stack-0.4.0.dist-info/RECORD +588 -0
  288. llama_stack-0.4.0.dist-info/top_level.txt +2 -0
  289. llama_stack_api/__init__.py +945 -0
  290. llama_stack_api/admin/__init__.py +45 -0
  291. llama_stack_api/admin/api.py +72 -0
  292. llama_stack_api/admin/fastapi_routes.py +117 -0
  293. llama_stack_api/admin/models.py +113 -0
  294. llama_stack_api/agents.py +173 -0
  295. llama_stack_api/batches/__init__.py +40 -0
  296. llama_stack_api/batches/api.py +53 -0
  297. llama_stack_api/batches/fastapi_routes.py +113 -0
  298. llama_stack_api/batches/models.py +78 -0
  299. llama_stack_api/benchmarks/__init__.py +43 -0
  300. llama_stack_api/benchmarks/api.py +39 -0
  301. llama_stack_api/benchmarks/fastapi_routes.py +109 -0
  302. llama_stack_api/benchmarks/models.py +109 -0
  303. {llama_stack/apis → llama_stack_api}/common/content_types.py +1 -43
  304. {llama_stack/apis → llama_stack_api}/common/errors.py +0 -8
  305. {llama_stack/apis → llama_stack_api}/common/job_types.py +1 -1
  306. llama_stack_api/common/responses.py +77 -0
  307. {llama_stack/apis → llama_stack_api}/common/training_types.py +1 -1
  308. {llama_stack/apis → llama_stack_api}/common/type_system.py +2 -14
  309. llama_stack_api/connectors.py +146 -0
  310. {llama_stack/apis/conversations → llama_stack_api}/conversations.py +23 -39
  311. {llama_stack/apis/datasetio → llama_stack_api}/datasetio.py +4 -8
  312. llama_stack_api/datasets/__init__.py +61 -0
  313. llama_stack_api/datasets/api.py +35 -0
  314. llama_stack_api/datasets/fastapi_routes.py +104 -0
  315. llama_stack_api/datasets/models.py +152 -0
  316. {llama_stack/providers → llama_stack_api}/datatypes.py +166 -10
  317. {llama_stack/apis/eval → llama_stack_api}/eval.py +8 -40
  318. llama_stack_api/file_processors/__init__.py +27 -0
  319. llama_stack_api/file_processors/api.py +64 -0
  320. llama_stack_api/file_processors/fastapi_routes.py +78 -0
  321. llama_stack_api/file_processors/models.py +42 -0
  322. llama_stack_api/files/__init__.py +35 -0
  323. llama_stack_api/files/api.py +51 -0
  324. llama_stack_api/files/fastapi_routes.py +124 -0
  325. llama_stack_api/files/models.py +107 -0
  326. {llama_stack/apis/inference → llama_stack_api}/inference.py +90 -194
  327. llama_stack_api/inspect_api/__init__.py +37 -0
  328. llama_stack_api/inspect_api/api.py +25 -0
  329. llama_stack_api/inspect_api/fastapi_routes.py +76 -0
  330. llama_stack_api/inspect_api/models.py +28 -0
  331. {llama_stack/apis/agents → llama_stack_api/internal}/__init__.py +3 -1
  332. llama_stack/providers/utils/kvstore/api.py → llama_stack_api/internal/kvstore.py +5 -0
  333. llama_stack_api/internal/sqlstore.py +79 -0
  334. {llama_stack/apis/models → llama_stack_api}/models.py +11 -9
  335. {llama_stack/apis/agents → llama_stack_api}/openai_responses.py +184 -27
  336. {llama_stack/apis/post_training → llama_stack_api}/post_training.py +7 -11
  337. {llama_stack/apis/prompts → llama_stack_api}/prompts.py +3 -4
  338. llama_stack_api/providers/__init__.py +33 -0
  339. llama_stack_api/providers/api.py +16 -0
  340. llama_stack_api/providers/fastapi_routes.py +57 -0
  341. llama_stack_api/providers/models.py +24 -0
  342. {llama_stack/apis/tools → llama_stack_api}/rag_tool.py +2 -52
  343. {llama_stack/apis → llama_stack_api}/resource.py +1 -1
  344. llama_stack_api/router_utils.py +160 -0
  345. {llama_stack/apis/safety → llama_stack_api}/safety.py +6 -9
  346. {llama_stack → llama_stack_api}/schema_utils.py +94 -4
  347. {llama_stack/apis/scoring → llama_stack_api}/scoring.py +3 -3
  348. {llama_stack/apis/scoring_functions → llama_stack_api}/scoring_functions.py +9 -6
  349. {llama_stack/apis/shields → llama_stack_api}/shields.py +6 -7
  350. {llama_stack/apis/tools → llama_stack_api}/tools.py +26 -21
  351. {llama_stack/apis/vector_io → llama_stack_api}/vector_io.py +133 -152
  352. {llama_stack/apis/vector_stores → llama_stack_api}/vector_stores.py +1 -1
  353. llama_stack/apis/agents/agents.py +0 -894
  354. llama_stack/apis/batches/__init__.py +0 -9
  355. llama_stack/apis/batches/batches.py +0 -100
  356. llama_stack/apis/benchmarks/__init__.py +0 -7
  357. llama_stack/apis/benchmarks/benchmarks.py +0 -108
  358. llama_stack/apis/common/responses.py +0 -36
  359. llama_stack/apis/conversations/__init__.py +0 -31
  360. llama_stack/apis/datasets/datasets.py +0 -251
  361. llama_stack/apis/datatypes.py +0 -160
  362. llama_stack/apis/eval/__init__.py +0 -7
  363. llama_stack/apis/files/__init__.py +0 -7
  364. llama_stack/apis/files/files.py +0 -199
  365. llama_stack/apis/inference/__init__.py +0 -7
  366. llama_stack/apis/inference/event_logger.py +0 -43
  367. llama_stack/apis/inspect/__init__.py +0 -7
  368. llama_stack/apis/inspect/inspect.py +0 -94
  369. llama_stack/apis/models/__init__.py +0 -7
  370. llama_stack/apis/post_training/__init__.py +0 -7
  371. llama_stack/apis/prompts/__init__.py +0 -9
  372. llama_stack/apis/providers/__init__.py +0 -7
  373. llama_stack/apis/providers/providers.py +0 -69
  374. llama_stack/apis/safety/__init__.py +0 -7
  375. llama_stack/apis/scoring/__init__.py +0 -7
  376. llama_stack/apis/scoring_functions/__init__.py +0 -7
  377. llama_stack/apis/shields/__init__.py +0 -7
  378. llama_stack/apis/synthetic_data_generation/__init__.py +0 -7
  379. llama_stack/apis/synthetic_data_generation/synthetic_data_generation.py +0 -77
  380. llama_stack/apis/telemetry/__init__.py +0 -7
  381. llama_stack/apis/telemetry/telemetry.py +0 -423
  382. llama_stack/apis/tools/__init__.py +0 -8
  383. llama_stack/apis/vector_io/__init__.py +0 -7
  384. llama_stack/apis/vector_stores/__init__.py +0 -7
  385. llama_stack/core/server/tracing.py +0 -80
  386. llama_stack/core/ui/app.py +0 -55
  387. llama_stack/core/ui/modules/__init__.py +0 -5
  388. llama_stack/core/ui/modules/api.py +0 -32
  389. llama_stack/core/ui/modules/utils.py +0 -42
  390. llama_stack/core/ui/page/__init__.py +0 -5
  391. llama_stack/core/ui/page/distribution/__init__.py +0 -5
  392. llama_stack/core/ui/page/distribution/datasets.py +0 -18
  393. llama_stack/core/ui/page/distribution/eval_tasks.py +0 -20
  394. llama_stack/core/ui/page/distribution/models.py +0 -18
  395. llama_stack/core/ui/page/distribution/providers.py +0 -27
  396. llama_stack/core/ui/page/distribution/resources.py +0 -48
  397. llama_stack/core/ui/page/distribution/scoring_functions.py +0 -18
  398. llama_stack/core/ui/page/distribution/shields.py +0 -19
  399. llama_stack/core/ui/page/evaluations/__init__.py +0 -5
  400. llama_stack/core/ui/page/evaluations/app_eval.py +0 -143
  401. llama_stack/core/ui/page/evaluations/native_eval.py +0 -253
  402. llama_stack/core/ui/page/playground/__init__.py +0 -5
  403. llama_stack/core/ui/page/playground/chat.py +0 -130
  404. llama_stack/core/ui/page/playground/tools.py +0 -352
  405. llama_stack/distributions/dell/build.yaml +0 -33
  406. llama_stack/distributions/meta-reference-gpu/build.yaml +0 -32
  407. llama_stack/distributions/nvidia/build.yaml +0 -29
  408. llama_stack/distributions/open-benchmark/build.yaml +0 -36
  409. llama_stack/distributions/postgres-demo/__init__.py +0 -7
  410. llama_stack/distributions/postgres-demo/build.yaml +0 -23
  411. llama_stack/distributions/postgres-demo/postgres_demo.py +0 -125
  412. llama_stack/distributions/starter/build.yaml +0 -61
  413. llama_stack/distributions/starter-gpu/build.yaml +0 -61
  414. llama_stack/distributions/watsonx/build.yaml +0 -33
  415. llama_stack/providers/inline/agents/meta_reference/agent_instance.py +0 -1024
  416. llama_stack/providers/inline/agents/meta_reference/persistence.py +0 -228
  417. llama_stack/providers/inline/telemetry/__init__.py +0 -5
  418. llama_stack/providers/inline/telemetry/meta_reference/__init__.py +0 -21
  419. llama_stack/providers/inline/telemetry/meta_reference/config.py +0 -47
  420. llama_stack/providers/inline/telemetry/meta_reference/telemetry.py +0 -252
  421. llama_stack/providers/remote/inference/bedrock/models.py +0 -29
  422. llama_stack/providers/utils/kvstore/sqlite/config.py +0 -20
  423. llama_stack/providers/utils/sqlstore/__init__.py +0 -5
  424. llama_stack/providers/utils/sqlstore/api.py +0 -128
  425. llama_stack/providers/utils/telemetry/__init__.py +0 -5
  426. llama_stack/providers/utils/telemetry/trace_protocol.py +0 -142
  427. llama_stack/providers/utils/telemetry/tracing.py +0 -384
  428. llama_stack/strong_typing/__init__.py +0 -19
  429. llama_stack/strong_typing/auxiliary.py +0 -228
  430. llama_stack/strong_typing/classdef.py +0 -440
  431. llama_stack/strong_typing/core.py +0 -46
  432. llama_stack/strong_typing/deserializer.py +0 -877
  433. llama_stack/strong_typing/docstring.py +0 -409
  434. llama_stack/strong_typing/exception.py +0 -23
  435. llama_stack/strong_typing/inspection.py +0 -1085
  436. llama_stack/strong_typing/mapping.py +0 -40
  437. llama_stack/strong_typing/name.py +0 -182
  438. llama_stack/strong_typing/schema.py +0 -792
  439. llama_stack/strong_typing/serialization.py +0 -97
  440. llama_stack/strong_typing/serializer.py +0 -500
  441. llama_stack/strong_typing/slots.py +0 -27
  442. llama_stack/strong_typing/topological.py +0 -89
  443. llama_stack/ui/node_modules/flatted/python/flatted.py +0 -149
  444. llama_stack-0.3.5.dist-info/RECORD +0 -625
  445. llama_stack-0.3.5.dist-info/top_level.txt +0 -1
  446. /llama_stack/{providers/utils → core/storage}/kvstore/config.py +0 -0
  447. /llama_stack/{providers/utils → core/storage}/kvstore/mongodb/__init__.py +0 -0
  448. /llama_stack/{providers/utils → core/storage}/kvstore/postgres/__init__.py +0 -0
  449. /llama_stack/{providers/utils → core/storage}/kvstore/redis/__init__.py +0 -0
  450. /llama_stack/{providers/utils → core/storage}/kvstore/sqlite/__init__.py +0 -0
  451. /llama_stack/{apis → providers/inline/file_processor}/__init__.py +0 -0
  452. /llama_stack/{apis/common → telemetry}/__init__.py +0 -0
  453. {llama_stack-0.3.5.dist-info → llama_stack-0.4.0.dist-info}/WHEEL +0 -0
  454. {llama_stack-0.3.5.dist-info → llama_stack-0.4.0.dist-info}/entry_points.txt +0 -0
  455. {llama_stack-0.3.5.dist-info → llama_stack-0.4.0.dist-info}/licenses/LICENSE +0 -0
  456. {llama_stack/core/ui → llama_stack_api/common}/__init__.py +0 -0
  457. {llama_stack/strong_typing → llama_stack_api}/py.typed +0 -0
  458. {llama_stack/apis → llama_stack_api}/version.py +0 -0
@@ -1,77 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.
6
-
7
- from enum import Enum
8
- from typing import Any, Protocol
9
-
10
- from pydantic import BaseModel
11
-
12
- from llama_stack.apis.inference import Message
13
- from llama_stack.apis.version import LLAMA_STACK_API_V1
14
- from llama_stack.schema_utils import json_schema_type, webmethod
15
-
16
-
17
- class FilteringFunction(Enum):
18
- """The type of filtering function.
19
-
20
- :cvar none: No filtering applied, accept all generated synthetic data
21
- :cvar random: Random sampling of generated data points
22
- :cvar top_k: Keep only the top-k highest scoring synthetic data samples
23
- :cvar top_p: Nucleus-style filtering, keep samples exceeding cumulative score threshold
24
- :cvar top_k_top_p: Combined top-k and top-p filtering strategy
25
- :cvar sigmoid: Apply sigmoid function for probability-based filtering
26
- """
27
-
28
- none = "none"
29
- random = "random"
30
- top_k = "top_k"
31
- top_p = "top_p"
32
- top_k_top_p = "top_k_top_p"
33
- sigmoid = "sigmoid"
34
-
35
-
36
- @json_schema_type
37
- class SyntheticDataGenerationRequest(BaseModel):
38
- """Request to generate synthetic data. A small batch of prompts and a filtering function
39
-
40
- :param dialogs: List of conversation messages to use as input for synthetic data generation
41
- :param filtering_function: Type of filtering to apply to generated synthetic data samples
42
- :param model: (Optional) The identifier of the model to use. The model must be registered with Llama Stack and available via the /models endpoint
43
- """
44
-
45
- dialogs: list[Message]
46
- filtering_function: FilteringFunction = FilteringFunction.none
47
- model: str | None = None
48
-
49
-
50
- @json_schema_type
51
- class SyntheticDataGenerationResponse(BaseModel):
52
- """Response from the synthetic data generation. Batch of (prompt, response, score) tuples that pass the threshold.
53
-
54
- :param synthetic_data: List of generated synthetic data samples that passed the filtering criteria
55
- :param statistics: (Optional) Statistical information about the generation process and filtering results
56
- """
57
-
58
- synthetic_data: list[dict[str, Any]]
59
- statistics: dict[str, Any] | None = None
60
-
61
-
62
- class SyntheticDataGeneration(Protocol):
63
- @webmethod(route="/synthetic-data-generation/generate", level=LLAMA_STACK_API_V1)
64
- def synthetic_data_generate(
65
- self,
66
- dialogs: list[Message],
67
- filtering_function: FilteringFunction = FilteringFunction.none,
68
- model: str | None = None,
69
- ) -> SyntheticDataGenerationResponse:
70
- """Generate synthetic data based on input dialogs and apply filtering.
71
-
72
- :param dialogs: List of conversation messages to use as input for synthetic data generation
73
- :param filtering_function: Type of filtering to apply to generated synthetic data samples
74
- :param model: (Optional) The identifier of the model to use. The model must be registered with Llama Stack and available via the /models endpoint
75
- :returns: Response containing filtered synthetic data samples and optional statistics
76
- """
77
- ...
@@ -1,7 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.
6
-
7
- from .telemetry import *
@@ -1,423 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.
6
-
7
- from datetime import datetime
8
- from enum import Enum
9
- from typing import (
10
- Annotated,
11
- Any,
12
- Literal,
13
- Protocol,
14
- runtime_checkable,
15
- )
16
-
17
- from pydantic import BaseModel, Field
18
-
19
- from llama_stack.models.llama.datatypes import Primitive
20
- from llama_stack.schema_utils import json_schema_type, register_schema
21
-
22
- # Add this constant near the top of the file, after the imports
23
- DEFAULT_TTL_DAYS = 7
24
-
25
-
26
- @json_schema_type
27
- class SpanStatus(Enum):
28
- """The status of a span indicating whether it completed successfully or with an error.
29
- :cvar OK: Span completed successfully without errors
30
- :cvar ERROR: Span completed with an error or failure
31
- """
32
-
33
- OK = "ok"
34
- ERROR = "error"
35
-
36
-
37
- @json_schema_type
38
- class Span(BaseModel):
39
- """A span representing a single operation within a trace.
40
- :param span_id: Unique identifier for the span
41
- :param trace_id: Unique identifier for the trace this span belongs to
42
- :param parent_span_id: (Optional) Unique identifier for the parent span, if this is a child span
43
- :param name: Human-readable name describing the operation this span represents
44
- :param start_time: Timestamp when the operation began
45
- :param end_time: (Optional) Timestamp when the operation finished, if completed
46
- :param attributes: (Optional) Key-value pairs containing additional metadata about the span
47
- """
48
-
49
- span_id: str
50
- trace_id: str
51
- parent_span_id: str | None = None
52
- name: str
53
- start_time: datetime
54
- end_time: datetime | None = None
55
- attributes: dict[str, Any] | None = Field(default_factory=lambda: {})
56
-
57
- def set_attribute(self, key: str, value: Any):
58
- if self.attributes is None:
59
- self.attributes = {}
60
- self.attributes[key] = value
61
-
62
-
63
- @json_schema_type
64
- class Trace(BaseModel):
65
- """A trace representing the complete execution path of a request across multiple operations.
66
- :param trace_id: Unique identifier for the trace
67
- :param root_span_id: Unique identifier for the root span that started this trace
68
- :param start_time: Timestamp when the trace began
69
- :param end_time: (Optional) Timestamp when the trace finished, if completed
70
- """
71
-
72
- trace_id: str
73
- root_span_id: str
74
- start_time: datetime
75
- end_time: datetime | None = None
76
-
77
-
78
- @json_schema_type
79
- class EventType(Enum):
80
- """The type of telemetry event being logged.
81
- :cvar UNSTRUCTURED_LOG: A simple log message with severity level
82
- :cvar STRUCTURED_LOG: A structured log event with typed payload data
83
- :cvar METRIC: A metric measurement with value and unit
84
- """
85
-
86
- UNSTRUCTURED_LOG = "unstructured_log"
87
- STRUCTURED_LOG = "structured_log"
88
- METRIC = "metric"
89
-
90
-
91
- @json_schema_type
92
- class LogSeverity(Enum):
93
- """The severity level of a log message.
94
- :cvar VERBOSE: Detailed diagnostic information for troubleshooting
95
- :cvar DEBUG: Debug information useful during development
96
- :cvar INFO: General informational messages about normal operation
97
- :cvar WARN: Warning messages about potentially problematic situations
98
- :cvar ERROR: Error messages indicating failures that don't stop execution
99
- :cvar CRITICAL: Critical error messages indicating severe failures
100
- """
101
-
102
- VERBOSE = "verbose"
103
- DEBUG = "debug"
104
- INFO = "info"
105
- WARN = "warn"
106
- ERROR = "error"
107
- CRITICAL = "critical"
108
-
109
-
110
- class EventCommon(BaseModel):
111
- """Common fields shared by all telemetry events.
112
- :param trace_id: Unique identifier for the trace this event belongs to
113
- :param span_id: Unique identifier for the span this event belongs to
114
- :param timestamp: Timestamp when the event occurred
115
- :param attributes: (Optional) Key-value pairs containing additional metadata about the event
116
- """
117
-
118
- trace_id: str
119
- span_id: str
120
- timestamp: datetime
121
- attributes: dict[str, Primitive] | None = Field(default_factory=lambda: {})
122
-
123
-
124
- @json_schema_type
125
- class UnstructuredLogEvent(EventCommon):
126
- """An unstructured log event containing a simple text message.
127
- :param type: Event type identifier set to UNSTRUCTURED_LOG
128
- :param message: The log message text
129
- :param severity: The severity level of the log message
130
- """
131
-
132
- type: Literal[EventType.UNSTRUCTURED_LOG] = EventType.UNSTRUCTURED_LOG
133
- message: str
134
- severity: LogSeverity
135
-
136
-
137
- @json_schema_type
138
- class MetricEvent(EventCommon):
139
- """A metric event containing a measured value.
140
- :param type: Event type identifier set to METRIC
141
- :param metric: The name of the metric being measured
142
- :param value: The numeric value of the metric measurement
143
- :param unit: The unit of measurement for the metric value
144
- """
145
-
146
- type: Literal[EventType.METRIC] = EventType.METRIC
147
- metric: str # this would be an enum
148
- value: int | float
149
- unit: str
150
-
151
-
152
- @json_schema_type
153
- class MetricInResponse(BaseModel):
154
- """A metric value included in API responses.
155
- :param metric: The name of the metric
156
- :param value: The numeric value of the metric
157
- :param unit: (Optional) The unit of measurement for the metric value
158
- """
159
-
160
- metric: str
161
- value: int | float
162
- unit: str | None = None
163
-
164
-
165
- # This is a short term solution to allow inference API to return metrics
166
- # The ideal way to do this is to have a way for all response types to include metrics
167
- # and all metric events logged to the telemetry API to be included with the response
168
- # To do this, we will need to augment all response types with a metrics field.
169
- # We have hit a blocker from stainless SDK that prevents us from doing this.
170
- # The blocker is that if we were to augment the response types that have a data field
171
- # in them like so
172
- # class ListModelsResponse(BaseModel):
173
- # metrics: Optional[List[MetricEvent]] = None
174
- # data: List[Models]
175
- # ...
176
- # The client SDK will need to access the data by using a .data field, which is not
177
- # ergonomic. Stainless SDK does support unwrapping the response type, but it
178
- # requires that the response type to only have a single field.
179
-
180
- # We will need a way in the client SDK to signal that the metrics are needed
181
- # and if they are needed, the client SDK has to return the full response type
182
- # without unwrapping it.
183
-
184
-
185
- class MetricResponseMixin(BaseModel):
186
- """Mixin class for API responses that can include metrics.
187
- :param metrics: (Optional) List of metrics associated with the API response
188
- """
189
-
190
- metrics: list[MetricInResponse] | None = None
191
-
192
-
193
- @json_schema_type
194
- class StructuredLogType(Enum):
195
- """The type of structured log event payload.
196
- :cvar SPAN_START: Event indicating the start of a new span
197
- :cvar SPAN_END: Event indicating the completion of a span
198
- """
199
-
200
- SPAN_START = "span_start"
201
- SPAN_END = "span_end"
202
-
203
-
204
- @json_schema_type
205
- class SpanStartPayload(BaseModel):
206
- """Payload for a span start event.
207
- :param type: Payload type identifier set to SPAN_START
208
- :param name: Human-readable name describing the operation this span represents
209
- :param parent_span_id: (Optional) Unique identifier for the parent span, if this is a child span
210
- """
211
-
212
- type: Literal[StructuredLogType.SPAN_START] = StructuredLogType.SPAN_START
213
- name: str
214
- parent_span_id: str | None = None
215
-
216
-
217
- @json_schema_type
218
- class SpanEndPayload(BaseModel):
219
- """Payload for a span end event.
220
- :param type: Payload type identifier set to SPAN_END
221
- :param status: The final status of the span indicating success or failure
222
- """
223
-
224
- type: Literal[StructuredLogType.SPAN_END] = StructuredLogType.SPAN_END
225
- status: SpanStatus
226
-
227
-
228
- StructuredLogPayload = Annotated[
229
- SpanStartPayload | SpanEndPayload,
230
- Field(discriminator="type"),
231
- ]
232
- register_schema(StructuredLogPayload, name="StructuredLogPayload")
233
-
234
-
235
- @json_schema_type
236
- class StructuredLogEvent(EventCommon):
237
- """A structured log event containing typed payload data.
238
- :param type: Event type identifier set to STRUCTURED_LOG
239
- :param payload: The structured payload data for the log event
240
- """
241
-
242
- type: Literal[EventType.STRUCTURED_LOG] = EventType.STRUCTURED_LOG
243
- payload: StructuredLogPayload
244
-
245
-
246
- Event = Annotated[
247
- UnstructuredLogEvent | MetricEvent | StructuredLogEvent,
248
- Field(discriminator="type"),
249
- ]
250
- register_schema(Event, name="Event")
251
-
252
-
253
- @json_schema_type
254
- class EvalTrace(BaseModel):
255
- """A trace record for evaluation purposes.
256
- :param session_id: Unique identifier for the evaluation session
257
- :param step: The evaluation step or phase identifier
258
- :param input: The input data for the evaluation
259
- :param output: The actual output produced during evaluation
260
- :param expected_output: The expected output for comparison during evaluation
261
- """
262
-
263
- session_id: str
264
- step: str
265
- input: str
266
- output: str
267
- expected_output: str
268
-
269
-
270
- @json_schema_type
271
- class SpanWithStatus(Span):
272
- """A span that includes status information.
273
- :param status: (Optional) The current status of the span
274
- """
275
-
276
- status: SpanStatus | None = None
277
-
278
-
279
- @json_schema_type
280
- class QueryConditionOp(Enum):
281
- """Comparison operators for query conditions.
282
- :cvar EQ: Equal to comparison
283
- :cvar NE: Not equal to comparison
284
- :cvar GT: Greater than comparison
285
- :cvar LT: Less than comparison
286
- """
287
-
288
- EQ = "eq"
289
- NE = "ne"
290
- GT = "gt"
291
- LT = "lt"
292
-
293
-
294
- @json_schema_type
295
- class QueryCondition(BaseModel):
296
- """A condition for filtering query results.
297
- :param key: The attribute key to filter on
298
- :param op: The comparison operator to apply
299
- :param value: The value to compare against
300
- """
301
-
302
- key: str
303
- op: QueryConditionOp
304
- value: Any
305
-
306
-
307
- class QueryTracesResponse(BaseModel):
308
- """Response containing a list of traces.
309
- :param data: List of traces matching the query criteria
310
- """
311
-
312
- data: list[Trace]
313
-
314
-
315
- class QuerySpansResponse(BaseModel):
316
- """Response containing a list of spans.
317
- :param data: List of spans matching the query criteria
318
- """
319
-
320
- data: list[Span]
321
-
322
-
323
- class QuerySpanTreeResponse(BaseModel):
324
- """Response containing a tree structure of spans.
325
- :param data: Dictionary mapping span IDs to spans with status information
326
- """
327
-
328
- data: dict[str, SpanWithStatus]
329
-
330
-
331
- class MetricQueryType(Enum):
332
- """The type of metric query to perform.
333
- :cvar RANGE: Query metrics over a time range
334
- :cvar INSTANT: Query metrics at a specific point in time
335
- """
336
-
337
- RANGE = "range"
338
- INSTANT = "instant"
339
-
340
-
341
- class MetricLabelOperator(Enum):
342
- """Operators for matching metric labels.
343
- :cvar EQUALS: Label value must equal the specified value
344
- :cvar NOT_EQUALS: Label value must not equal the specified value
345
- :cvar REGEX_MATCH: Label value must match the specified regular expression
346
- :cvar REGEX_NOT_MATCH: Label value must not match the specified regular expression
347
- """
348
-
349
- EQUALS = "="
350
- NOT_EQUALS = "!="
351
- REGEX_MATCH = "=~"
352
- REGEX_NOT_MATCH = "!~"
353
-
354
-
355
- class MetricLabelMatcher(BaseModel):
356
- """A matcher for filtering metrics by label values.
357
- :param name: The name of the label to match
358
- :param value: The value to match against
359
- :param operator: The comparison operator to use for matching
360
- """
361
-
362
- name: str
363
- value: str
364
- operator: MetricLabelOperator = MetricLabelOperator.EQUALS
365
-
366
-
367
- @json_schema_type
368
- class MetricLabel(BaseModel):
369
- """A label associated with a metric.
370
- :param name: The name of the label
371
- :param value: The value of the label
372
- """
373
-
374
- name: str
375
- value: str
376
-
377
-
378
- @json_schema_type
379
- class MetricDataPoint(BaseModel):
380
- """A single data point in a metric time series.
381
- :param timestamp: Unix timestamp when the metric value was recorded
382
- :param value: The numeric value of the metric at this timestamp
383
- """
384
-
385
- timestamp: int
386
- value: float
387
- unit: str
388
-
389
-
390
- @json_schema_type
391
- class MetricSeries(BaseModel):
392
- """A time series of metric data points.
393
- :param metric: The name of the metric
394
- :param labels: List of labels associated with this metric series
395
- :param values: List of data points in chronological order
396
- """
397
-
398
- metric: str
399
- labels: list[MetricLabel]
400
- values: list[MetricDataPoint]
401
-
402
-
403
- class QueryMetricsResponse(BaseModel):
404
- """Response containing metric time series data.
405
- :param data: List of metric series matching the query criteria
406
- """
407
-
408
- data: list[MetricSeries]
409
-
410
-
411
- @runtime_checkable
412
- class Telemetry(Protocol):
413
- async def log_event(
414
- self,
415
- event: Event,
416
- ttl_seconds: int = DEFAULT_TTL_DAYS * 86400,
417
- ) -> None:
418
- """Log an event.
419
-
420
- :param event: The event to log.
421
- :param ttl_seconds: The time to live of the event.
422
- """
423
- ...
@@ -1,8 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.
6
-
7
- from .rag_tool import *
8
- from .tools import *
@@ -1,7 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.
6
-
7
- from .vector_io import *
@@ -1,7 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.
6
-
7
- from .vector_stores import *
@@ -1,80 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.
6
- from aiohttp import hdrs
7
-
8
- from llama_stack.core.external import ExternalApiSpec
9
- from llama_stack.core.server.routes import find_matching_route, initialize_route_impls
10
- from llama_stack.log import get_logger
11
- from llama_stack.providers.utils.telemetry.tracing import end_trace, start_trace
12
-
13
- logger = get_logger(name=__name__, category="core::server")
14
-
15
-
16
- class TracingMiddleware:
17
- def __init__(self, app, impls, external_apis: dict[str, ExternalApiSpec]):
18
- self.app = app
19
- self.impls = impls
20
- self.external_apis = external_apis
21
- # FastAPI built-in paths that should bypass custom routing
22
- self.fastapi_paths = ("/docs", "/redoc", "/openapi.json", "/favicon.ico", "/static")
23
-
24
- async def __call__(self, scope, receive, send):
25
- if scope.get("type") == "lifespan":
26
- return await self.app(scope, receive, send)
27
-
28
- path = scope.get("path", "")
29
-
30
- # Check if the path is a FastAPI built-in path
31
- if path.startswith(self.fastapi_paths):
32
- # Pass through to FastAPI's built-in handlers
33
- logger.debug(f"Bypassing custom routing for FastAPI built-in path: {path}")
34
- return await self.app(scope, receive, send)
35
-
36
- if not hasattr(self, "route_impls"):
37
- self.route_impls = initialize_route_impls(self.impls, self.external_apis)
38
-
39
- try:
40
- _, _, route_path, webmethod = find_matching_route(
41
- scope.get("method", hdrs.METH_GET), path, self.route_impls
42
- )
43
- except ValueError:
44
- # If no matching endpoint is found, pass through to FastAPI
45
- logger.debug(f"No matching route found for path: {path}, falling back to FastAPI")
46
- return await self.app(scope, receive, send)
47
-
48
- # Log deprecation warning if route is deprecated
49
- if getattr(webmethod, "deprecated", False):
50
- logger.warning(
51
- f"DEPRECATED ROUTE USED: {scope.get('method', 'GET')} {path} - "
52
- f"This route is deprecated and may be removed in a future version. "
53
- f"Please check the docs for the supported version."
54
- )
55
-
56
- trace_attributes = {"__location__": "server", "raw_path": path}
57
-
58
- # Extract W3C trace context headers and store as trace attributes
59
- headers = dict(scope.get("headers", []))
60
- traceparent = headers.get(b"traceparent", b"").decode()
61
- if traceparent:
62
- trace_attributes["traceparent"] = traceparent
63
- tracestate = headers.get(b"tracestate", b"").decode()
64
- if tracestate:
65
- trace_attributes["tracestate"] = tracestate
66
-
67
- trace_path = webmethod.descriptive_name or route_path
68
- trace_context = await start_trace(trace_path, trace_attributes)
69
-
70
- async def send_with_trace_id(message):
71
- if message["type"] == "http.response.start":
72
- headers = message.get("headers", [])
73
- headers.append([b"x-trace-id", str(trace_context.trace_id).encode()])
74
- message["headers"] = headers
75
- await send(message)
76
-
77
- try:
78
- return await self.app(scope, receive, send_with_trace_id)
79
- finally:
80
- await end_trace()
@@ -1,55 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.
6
- import streamlit as st
7
-
8
-
9
- def main():
10
- # Evaluation pages
11
- application_evaluation_page = st.Page(
12
- "page/evaluations/app_eval.py",
13
- title="Evaluations (Scoring)",
14
- icon="📊",
15
- default=False,
16
- )
17
- native_evaluation_page = st.Page(
18
- "page/evaluations/native_eval.py",
19
- title="Evaluations (Generation + Scoring)",
20
- icon="📊",
21
- default=False,
22
- )
23
-
24
- # Playground pages
25
- chat_page = st.Page("page/playground/chat.py", title="Chat", icon="💬", default=True)
26
- rag_page = st.Page("page/playground/rag.py", title="RAG", icon="💬", default=False)
27
- tool_page = st.Page("page/playground/tools.py", title="Tools", icon="🛠", default=False)
28
-
29
- # Distribution pages
30
- resources_page = st.Page("page/distribution/resources.py", title="Resources", icon="🔍", default=False)
31
- provider_page = st.Page(
32
- "page/distribution/providers.py",
33
- title="API Providers",
34
- icon="🔍",
35
- default=False,
36
- )
37
-
38
- pg = st.navigation(
39
- {
40
- "Playground": [
41
- chat_page,
42
- rag_page,
43
- tool_page,
44
- application_evaluation_page,
45
- native_evaluation_page,
46
- ],
47
- "Inspect": [provider_page, resources_page],
48
- },
49
- expanded=False,
50
- )
51
- pg.run()
52
-
53
-
54
- if __name__ == "__main__":
55
- main()
@@ -1,5 +0,0 @@
1
- # Copyright (c) Meta Platforms, Inc. and affiliates.
2
- # All rights reserved.
3
- #
4
- # This source code is licensed under the terms described in the LICENSE file in
5
- # the root directory of this source tree.