flowllm 0.1.0__py3-none-any.whl → 0.1.2__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 (141) hide show
  1. flowllm/__init__.py +21 -0
  2. flowllm/app.py +15 -0
  3. flowllm/client/__init__.py +25 -0
  4. flowllm/client/async_http_client.py +81 -0
  5. flowllm/client/http_client.py +81 -0
  6. flowllm/client/mcp_client.py +133 -0
  7. flowllm/client/sync_mcp_client.py +116 -0
  8. flowllm/config/__init__.py +1 -0
  9. flowllm/config/default.yaml +77 -0
  10. flowllm/config/empty.yaml +37 -0
  11. flowllm/config/pydantic_config_parser.py +242 -0
  12. flowllm/context/base_context.py +79 -0
  13. flowllm/context/flow_context.py +16 -0
  14. llmflow/op/prompt_mixin.py → flowllm/context/prompt_handler.py +25 -14
  15. flowllm/context/registry.py +30 -0
  16. flowllm/context/service_context.py +147 -0
  17. flowllm/embedding_model/__init__.py +1 -0
  18. {llmflow → flowllm}/embedding_model/base_embedding_model.py +93 -2
  19. {llmflow → flowllm}/embedding_model/openai_compatible_embedding_model.py +71 -13
  20. flowllm/flow/__init__.py +1 -0
  21. flowllm/flow/base_flow.py +72 -0
  22. flowllm/flow/base_tool_flow.py +15 -0
  23. flowllm/flow/gallery/__init__.py +8 -0
  24. flowllm/flow/gallery/cmd_flow.py +11 -0
  25. flowllm/flow/gallery/code_tool_flow.py +30 -0
  26. flowllm/flow/gallery/dashscope_search_tool_flow.py +34 -0
  27. flowllm/flow/gallery/deepsearch_tool_flow.py +39 -0
  28. flowllm/flow/gallery/expression_tool_flow.py +18 -0
  29. flowllm/flow/gallery/mock_tool_flow.py +67 -0
  30. flowllm/flow/gallery/tavily_search_tool_flow.py +30 -0
  31. flowllm/flow/gallery/terminate_tool_flow.py +30 -0
  32. flowllm/flow/parser/expression_parser.py +171 -0
  33. flowllm/llm/__init__.py +2 -0
  34. {llmflow → flowllm}/llm/base_llm.py +100 -18
  35. flowllm/llm/litellm_llm.py +455 -0
  36. flowllm/llm/openai_compatible_llm.py +439 -0
  37. flowllm/op/__init__.py +11 -0
  38. llmflow/op/react/react_v1_op.py → flowllm/op/agent/react_op.py +17 -22
  39. flowllm/op/akshare/__init__.py +3 -0
  40. flowllm/op/akshare/get_ak_a_code_op.py +108 -0
  41. flowllm/op/akshare/get_ak_a_code_prompt.yaml +21 -0
  42. flowllm/op/akshare/get_ak_a_info_op.py +140 -0
  43. flowllm/op/base_llm_op.py +64 -0
  44. flowllm/op/base_op.py +148 -0
  45. flowllm/op/base_ray_op.py +313 -0
  46. flowllm/op/code/__init__.py +1 -0
  47. flowllm/op/code/execute_code_op.py +42 -0
  48. flowllm/op/gallery/__init__.py +2 -0
  49. flowllm/op/gallery/mock_op.py +42 -0
  50. flowllm/op/gallery/terminate_op.py +29 -0
  51. flowllm/op/parallel_op.py +23 -0
  52. flowllm/op/search/__init__.py +3 -0
  53. flowllm/op/search/dashscope_deep_research_op.py +260 -0
  54. flowllm/op/search/dashscope_search_op.py +179 -0
  55. flowllm/op/search/dashscope_search_prompt.yaml +13 -0
  56. flowllm/op/search/tavily_search_op.py +102 -0
  57. flowllm/op/sequential_op.py +21 -0
  58. flowllm/schema/flow_request.py +12 -0
  59. flowllm/schema/flow_response.py +12 -0
  60. flowllm/schema/message.py +35 -0
  61. flowllm/schema/service_config.py +72 -0
  62. flowllm/schema/tool_call.py +118 -0
  63. {llmflow → flowllm}/schema/vector_node.py +1 -0
  64. flowllm/service/__init__.py +3 -0
  65. flowllm/service/base_service.py +68 -0
  66. flowllm/service/cmd_service.py +15 -0
  67. flowllm/service/http_service.py +79 -0
  68. flowllm/service/mcp_service.py +47 -0
  69. flowllm/storage/__init__.py +1 -0
  70. flowllm/storage/cache/__init__.py +1 -0
  71. flowllm/storage/cache/cache_data_handler.py +104 -0
  72. flowllm/storage/cache/data_cache.py +375 -0
  73. flowllm/storage/vector_store/__init__.py +3 -0
  74. flowllm/storage/vector_store/base_vector_store.py +44 -0
  75. {llmflow → flowllm/storage}/vector_store/chroma_vector_store.py +11 -10
  76. {llmflow → flowllm/storage}/vector_store/es_vector_store.py +11 -11
  77. llmflow/vector_store/file_vector_store.py → flowllm/storage/vector_store/local_vector_store.py +110 -11
  78. flowllm/utils/common_utils.py +52 -0
  79. flowllm/utils/fetch_url.py +117 -0
  80. flowllm/utils/llm_utils.py +28 -0
  81. flowllm/utils/ridge_v2.py +54 -0
  82. {llmflow → flowllm}/utils/timer.py +5 -4
  83. {flowllm-0.1.0.dist-info → flowllm-0.1.2.dist-info}/METADATA +45 -388
  84. flowllm-0.1.2.dist-info/RECORD +99 -0
  85. flowllm-0.1.2.dist-info/entry_points.txt +2 -0
  86. {flowllm-0.1.0.dist-info → flowllm-0.1.2.dist-info}/licenses/LICENSE +1 -1
  87. flowllm-0.1.2.dist-info/top_level.txt +1 -0
  88. flowllm-0.1.0.dist-info/RECORD +0 -66
  89. flowllm-0.1.0.dist-info/entry_points.txt +0 -3
  90. flowllm-0.1.0.dist-info/top_level.txt +0 -1
  91. llmflow/app.py +0 -53
  92. llmflow/config/config_parser.py +0 -80
  93. llmflow/config/mock_config.yaml +0 -58
  94. llmflow/embedding_model/__init__.py +0 -5
  95. llmflow/enumeration/agent_state.py +0 -8
  96. llmflow/llm/__init__.py +0 -5
  97. llmflow/llm/openai_compatible_llm.py +0 -283
  98. llmflow/mcp_server.py +0 -110
  99. llmflow/op/__init__.py +0 -10
  100. llmflow/op/base_op.py +0 -125
  101. llmflow/op/mock_op.py +0 -40
  102. llmflow/op/vector_store/__init__.py +0 -13
  103. llmflow/op/vector_store/recall_vector_store_op.py +0 -48
  104. llmflow/op/vector_store/update_vector_store_op.py +0 -28
  105. llmflow/op/vector_store/vector_store_action_op.py +0 -46
  106. llmflow/pipeline/pipeline.py +0 -94
  107. llmflow/pipeline/pipeline_context.py +0 -37
  108. llmflow/schema/app_config.py +0 -69
  109. llmflow/schema/experience.py +0 -144
  110. llmflow/schema/message.py +0 -68
  111. llmflow/schema/request.py +0 -32
  112. llmflow/schema/response.py +0 -29
  113. llmflow/service/__init__.py +0 -0
  114. llmflow/service/llmflow_service.py +0 -96
  115. llmflow/tool/__init__.py +0 -9
  116. llmflow/tool/base_tool.py +0 -80
  117. llmflow/tool/code_tool.py +0 -43
  118. llmflow/tool/dashscope_search_tool.py +0 -162
  119. llmflow/tool/mcp_tool.py +0 -77
  120. llmflow/tool/tavily_search_tool.py +0 -109
  121. llmflow/tool/terminate_tool.py +0 -23
  122. llmflow/utils/__init__.py +0 -0
  123. llmflow/utils/common_utils.py +0 -17
  124. llmflow/utils/file_handler.py +0 -25
  125. llmflow/utils/http_client.py +0 -156
  126. llmflow/utils/op_utils.py +0 -102
  127. llmflow/utils/registry.py +0 -33
  128. llmflow/vector_store/__init__.py +0 -7
  129. llmflow/vector_store/base_vector_store.py +0 -136
  130. {llmflow → flowllm/context}/__init__.py +0 -0
  131. {llmflow/config → flowllm/enumeration}/__init__.py +0 -0
  132. {llmflow → flowllm}/enumeration/chunk_enum.py +0 -0
  133. {llmflow → flowllm}/enumeration/http_enum.py +0 -0
  134. {llmflow → flowllm}/enumeration/role.py +0 -0
  135. {llmflow/enumeration → flowllm/flow/parser}/__init__.py +0 -0
  136. {llmflow/op/react → flowllm/op/agent}/__init__.py +0 -0
  137. /llmflow/op/react/react_v1_prompt.yaml → /flowllm/op/agent/react_prompt.yaml +0 -0
  138. {llmflow/pipeline → flowllm/schema}/__init__.py +0 -0
  139. {llmflow/schema → flowllm/utils}/__init__.py +0 -0
  140. {llmflow → flowllm}/utils/singleton.py +0 -0
  141. {flowllm-0.1.0.dist-info → flowllm-0.1.2.dist-info}/WHEEL +0 -0
@@ -1,7 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowllm
3
- Version: 0.1.0
4
- Summary: build llm flow
3
+ Version: 0.1.2
4
+ Summary: A flexible framework for building LLM-powered flows and mcp services
5
+ Author-email: FlowLLM Team <flowllm@example.com>
6
+ Maintainer-email: FlowLLM Team <flowllm@example.com>
5
7
  License: Apache License
6
8
  Version 2.0, January 2004
7
9
  http://www.apache.org/licenses/
@@ -190,7 +192,7 @@ License: Apache License
190
192
  same "printed page" as the copyright notice for easier
191
193
  identification within third-party archives.
192
194
 
193
- Copyright 2024 Alibaba Group
195
+ Copyright 2024 FlowLLM
194
196
 
195
197
  Licensed under the Apache License, Version 2.0 (the "License");
196
198
  you may not use this file except in compliance with the License.
@@ -204,394 +206,49 @@ License: Apache License
204
206
  See the License for the specific language governing permissions and
205
207
  limitations under the License.
206
208
 
207
- Classifier: Programming Language :: Python :: 3
209
+ Keywords: llm,ai,flow,framework,openai,chatgpt,language-model,mcp,http
210
+ Classifier: Development Status :: 3 - Alpha
211
+ Classifier: Intended Audience :: Developers
212
+ Classifier: Intended Audience :: Science/Research
208
213
  Classifier: License :: OSI Approved :: Apache Software License
209
214
  Classifier: Operating System :: OS Independent
215
+ Classifier: Programming Language :: Python :: 3
216
+ Classifier: Programming Language :: Python :: 3.12
217
+ Classifier: Programming Language :: Python :: 3.13
218
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
219
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
220
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
221
+ Classifier: Typing :: Typed
210
222
  Requires-Python: >=3.12
211
223
  Description-Content-Type: text/markdown
212
224
  License-File: LICENSE
213
- Requires-Dist: dashscope>=1.19.1
214
- Requires-Dist: elasticsearch>=8.14.0
215
- Requires-Dist: fastapi>=0.115.13
216
- Requires-Dist: fastmcp>=2.10.6
217
- Requires-Dist: loguru>=0.7.3
218
- Requires-Dist: mcp>=1.9.4
219
- Requires-Dist: numpy>=2.3.0
220
- Requires-Dist: openai>=1.88.0
221
- Requires-Dist: pydantic>=2.11.7
222
- Requires-Dist: PyYAML>=6.0.2
223
- Requires-Dist: Requests>=2.32.4
224
- Requires-Dist: uvicorn>=0.34.3
225
- Requires-Dist: setuptools>=75.0
225
+ Requires-Dist: akshare
226
+ Requires-Dist: beautifulsoup4
227
+ Requires-Dist: dashscope
228
+ Requires-Dist: elasticsearch
229
+ Requires-Dist: fastapi
230
+ Requires-Dist: fastmcp
231
+ Requires-Dist: httpx
232
+ Requires-Dist: litellm
233
+ Requires-Dist: loguru
234
+ Requires-Dist: mcp
235
+ Requires-Dist: numpy
236
+ Requires-Dist: openai
237
+ Requires-Dist: pandas
238
+ Requires-Dist: pydantic
239
+ Requires-Dist: PyYAML
240
+ Requires-Dist: ray
241
+ Requires-Dist: requests
242
+ Requires-Dist: scikit-learn
243
+ Requires-Dist: tavily-python
244
+ Requires-Dist: tqdm
245
+ Requires-Dist: urllib3
246
+ Requires-Dist: uvicorn[standard]
247
+ Requires-Dist: chromadb
248
+ Requires-Dist: elasticsearch
249
+ Requires-Dist: ray
250
+ Provides-Extra: distributed
251
+ Requires-Dist: ray; extra == "distributed"
252
+ Provides-Extra: all
253
+ Requires-Dist: flowllm[distributed]; extra == "all"
226
254
  Dynamic: license-file
227
-
228
- # LLMFlow
229
-
230
- [![Python](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
231
- [![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)
232
-
233
- LLMFlow is a flexible large language model workflow framework that provides a modular pipeline architecture for building complex AI applications. The framework supports multiple LLM providers, vector storage backends, and tool integrations, enabling you to easily build Retrieval-Augmented Generation (RAG), intelligent agents, and other AI-powered applications.
234
-
235
- ## 🚀 Key Features
236
-
237
- ### 🔧 Modular Architecture
238
- - **Pipeline System**: Flexible pipeline configuration supporting both serial and parallel operations
239
- - **Operation Registry**: Extensible operation registry with support for custom operations
240
- - **Configuration-Driven**: Manage entire applications through YAML configuration files
241
-
242
- ### 🤖 LLM Support
243
- - **Multi-Provider Compatible**: Support for OpenAI-compatible APIs
244
- - **Streaming Responses**: Real-time streaming output support
245
- - **Tool Calling**: Built-in tool calling and parallel execution support
246
- - **Reasoning Mode**: Chain-of-thought reasoning support
247
-
248
- ### 📚 Vector Storage
249
- - **Multi-Backend Support**:
250
- - Elasticsearch
251
- - ChromaDB
252
- - Local file storage
253
- - **Embedding Models**: Support for multiple embedding models
254
- - **Workspace Management**: Multi-tenant vector storage management
255
-
256
- ### 🛠️ Rich Tool Ecosystem
257
- - **Code Execution**: Python code execution tool
258
- - **Web Search**: Integrated Tavily and DashScope search
259
- - **MCP Protocol**: Model Context Protocol support
260
- - **Termination Control**: Intelligent conversation termination management
261
-
262
- ### 🌐 API Services
263
- - **RESTful API**: FastAPI-powered HTTP services
264
- - **MCP Server**: Model Context Protocol server support
265
- - **Multiple Endpoints**: Retriever, summarizer, vector store, agent APIs
266
-
267
- ## 📦 Installation
268
-
269
- ### Prerequisites
270
- - Python 3.12+
271
- - pip or poetry
272
-
273
- ### Installation Steps
274
-
275
- ```bash
276
- # Clone the repository
277
- git clone https://github.com/your-username/llmflow.git
278
- cd llmflow
279
-
280
- # Install dependencies
281
- pip install -e .
282
-
283
- # Or using poetry
284
- poetry install
285
- ```
286
-
287
- ### Environment Configuration
288
-
289
- Copy the environment template:
290
- ```bash
291
- cp example.env .env
292
- ```
293
-
294
- Edit the `.env` file to configure necessary API keys:
295
-
296
- ```bash
297
- # LLM Configuration
298
- LLM_API_KEY=sk-your-llm-api-key
299
- LLM_BASE_URL=https://your-llm-endpoint/v1
300
-
301
- # Embedding Model Configuration
302
- EMBEDDING_API_KEY=sk-your-embedding-api-key
303
- EMBEDDING_BASE_URL=https://your-embedding-endpoint/v1
304
-
305
- # Elasticsearch (Optional)
306
- ES_HOSTS=http://localhost:9200
307
-
308
- # DashScope Search (Optional)
309
- DASHSCOPE_API_KEY=sk-your-dashscope-key
310
- ```
311
-
312
- ## 🏃 Quick Start
313
-
314
- ### 1. Start HTTP Service
315
-
316
- ```bash
317
- llmflow \
318
- http_service.port=8001 \
319
- llm.default.model_name=qwen3-32b \
320
- embedding_model.default.model_name=text-embedding-v4 \
321
- vector_store.default.backend=local_file
322
- ```
323
-
324
- ### 2. Start MCP Server
325
-
326
- ```bash
327
- llmflow_mcp \
328
- mcp_transport=stdio \
329
- http_service.port=8001 \
330
- llm.default.model_name=qwen3-32b \
331
- embedding_model.default.model_name=text-embedding-v4 \
332
- vector_store.default.backend=local_file
333
- ```
334
-
335
- ### 3. API Usage Examples
336
-
337
- #### Retriever API
338
- ```python
339
- import requests
340
-
341
- response = requests.post('http://localhost:8001/retriever', json={
342
- "query": "What is artificial intelligence?",
343
- "top_k": 5,
344
- "workspace_id": "default",
345
- "config": {}
346
- })
347
- print(response.json())
348
- ```
349
-
350
- #### Agent API
351
- ```python
352
- response = requests.post('http://localhost:8001/agent', json={
353
- "query": "Help me search for the latest AI technology trends",
354
- "workspace_id": "default",
355
- "config": {}
356
- })
357
- print(response.json())
358
- ```
359
-
360
- ## ⚙️ Configuration Guide
361
-
362
- ### Pipeline Configuration Syntax
363
-
364
- LLMFlow uses an intuitive string syntax to define operation pipelines:
365
-
366
- ```yaml
367
- api:
368
- # Serial execution: op1 -> op2 -> op3
369
- retriever: recall_vector_store_op->summarizer_op
370
-
371
- # Parallel execution: [op1 | op2] runs in parallel
372
- summarizer: mock1_op->[mock4_op->mock2_op|mock5_op]->mock3_op
373
-
374
- # Mixed mode: combination of serial and parallel
375
- agent: react_v1_op
376
- ```
377
-
378
- ### Complete Configuration Example
379
-
380
- ```yaml
381
- # HTTP Service Configuration
382
- http_service:
383
- host: "0.0.0.0"
384
- port: 8001
385
- timeout_keep_alive: 600
386
- limit_concurrency: 64
387
-
388
- # Thread Pool Configuration
389
- thread_pool:
390
- max_workers: 10
391
-
392
- # API Pipeline Definitions
393
- api:
394
- retriever: recall_vector_store_op
395
- summarizer: update_vector_store_op
396
- vector_store: vector_store_action_op
397
- agent: react_v1_op
398
-
399
- # Operation Configuration
400
- op:
401
- react_v1_op:
402
- backend: react_v1_op
403
- llm: default
404
- params:
405
- max_steps: 10
406
- tool_names: "code_tool,tavily_search_tool,terminate_tool"
407
-
408
- # LLM Configuration
409
- llm:
410
- default:
411
- backend: openai_compatible
412
- model_name: qwen3-32b
413
- params:
414
- temperature: 0.6
415
- max_retries: 5
416
-
417
- # Embedding Model Configuration
418
- embedding_model:
419
- default:
420
- backend: openai_compatible
421
- model_name: text-embedding-v4
422
- params:
423
- dimensions: 1024
424
-
425
- # Vector Store Configuration
426
- vector_store:
427
- default:
428
- backend: local_file # or elasticsearch, chroma
429
- embedding_model: default
430
- params:
431
- store_dir: "./vector_store_data"
432
- ```
433
-
434
- ## 🧩 Architecture Design
435
-
436
- ### Core Components
437
-
438
- ```
439
- ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
440
- │ FastAPI App │ │ MCP Server │ │ Configuration │
441
- │ │ │ │ │ Parser │
442
- └─────────────────┘ └─────────────────┘ └─────────────────┘
443
- │ │ │
444
- └───────────────────────┼───────────────────────┘
445
-
446
- ┌─────────────────┐
447
- │ LLMFlow Service │
448
- └─────────────────┘
449
-
450
- ┌─────────────────┐
451
- │ Pipeline │
452
- │ Context │
453
- └─────────────────┘
454
-
455
- ┌───────────────────┼───────────────────┐
456
- │ │ │
457
- ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
458
- │ Operations │ │ Tools │ │Vector Stores│
459
- │ │ │ │ │ │
460
- │ • ReAct │ │ • Code │ │ • File │
461
- │ • Recall │ │ • Search │ │ • ES │
462
- │ • Update │ │ • MCP │ │ • Chroma │
463
- │ • Mock │ │ • Terminate │ │ │
464
- └─────────────┘ └─────────────┘ └─────────────┘
465
- ```
466
-
467
- ### Data Flow
468
-
469
- ```
470
- Request → Configuration → Pipeline → Operations → Tools/VectorStore → Response
471
- ```
472
-
473
- ## 🔧 Development Guide
474
-
475
- ### Custom Operations
476
-
477
- ```python
478
- from llmflow.op import OP_REGISTRY
479
- from llmflow.op.base_op import BaseOp
480
-
481
- @OP_REGISTRY.register()
482
- class CustomOp(BaseOp):
483
- def execute(self):
484
- # Implement your custom logic
485
- request = self.context.request
486
- response = self.context.response
487
-
488
- # Process request
489
- result = self.process_data(request.query)
490
-
491
- # Update response
492
- response.metadata["custom_result"] = result
493
- ```
494
-
495
- ### Custom Tools
496
-
497
- ```python
498
- from llmflow.tool import TOOL_REGISTRY
499
- from llmflow.tool.base_tool import BaseTool
500
-
501
- @TOOL_REGISTRY.register()
502
- class CustomTool(BaseTool):
503
- name: str = "custom_tool"
504
- description: str = "Custom tool description"
505
- parameters: dict = {
506
- "type": "object",
507
- "properties": {
508
- "input": {"type": "string", "description": "Input parameter"}
509
- },
510
- "required": ["input"]
511
- }
512
-
513
- def _execute(self, input: str, **kwargs):
514
- # Implement tool logic
515
- return f"Processing result: {input}"
516
- ```
517
-
518
- ### Custom Vector Stores
519
-
520
- ```python
521
- from llmflow.vector_store import VECTOR_STORE_REGISTRY
522
- from llmflow.vector_store.base_vector_store import BaseVectorStore
523
-
524
- @VECTOR_STORE_REGISTRY.register("custom_store")
525
- class CustomVectorStore(BaseVectorStore):
526
- def search(self, query: str, top_k: int = 10, **kwargs):
527
- # Implement search logic
528
- pass
529
-
530
- def insert(self, nodes: List[VectorNode], **kwargs):
531
- # Implement insertion logic
532
- pass
533
- ```
534
-
535
- ## 🧪 Testing
536
-
537
- ```bash
538
- # Run tests
539
- pytest
540
-
541
- # Run specific tests
542
- pytest tests/test_pipeline.py
543
-
544
- # Generate coverage report
545
- pytest --cov=llmflow tests/
546
- ```
547
-
548
- ## 🤝 Contributing
549
-
550
- We welcome community contributions! Please follow these steps:
551
-
552
- 1. Fork the repository
553
- 2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
554
- 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
555
- 4. Push to the branch (`git push origin feature/AmazingFeature`)
556
- 5. Open a Pull Request
557
-
558
- ### Development Environment Setup
559
-
560
- ```bash
561
- # Install development dependencies
562
- pip install -e ".[dev]"
563
-
564
- # Install pre-commit hooks
565
- pre-commit install
566
-
567
- # Run code formatting
568
- black llmflow/
569
- isort llmflow/
570
-
571
- # Run type checking
572
- mypy llmflow/
573
- ```
574
-
575
- ## 📚 Documentation
576
-
577
- - [API Documentation](docs/api.md)
578
- - [Configuration Guide](docs/configuration.md)
579
- - [Operations Development](docs/operations.md)
580
- - [Tools Development](docs/tools.md)
581
- - [Deployment Guide](docs/deployment.md)
582
-
583
- ## 🐛 Bug Reports
584
-
585
- If you find bugs or have feature requests, please create an issue on [GitHub Issues](https://github.com/your-username/llmflow/issues).
586
-
587
- ## 📄 License
588
-
589
- This project is licensed under the Apache License 2.0. See the [LICENSE](LICENSE) file for details.
590
-
591
- ## 🙏 Acknowledgments
592
-
593
- Thanks to all developers and community members who have contributed to the LLMFlow project.
594
-
595
- ---
596
-
597
- **LLMFlow** - Making AI workflow development simple and powerful 🚀
@@ -0,0 +1,99 @@
1
+ flowllm/__init__.py,sha256=8BSQq5dCwf6h773C8ctRCfqElhRi26NOxcNvc7MlW7g,436
2
+ flowllm/app.py,sha256=oo_7c1sXeWOEkdIL40b_Yv-vkvu6YWhs3w49SojE4bs,238
3
+ flowllm/client/__init__.py,sha256=ruBU6hBC7LWoVg5oNdZBTqi3MhNUhkCYAHhPj-UJKEA,815
4
+ flowllm/client/async_http_client.py,sha256=w3YUsCTlART3HvAIpf30ZIX4m7L7k9f9iZejkNBq_h8,3026
5
+ flowllm/client/http_client.py,sha256=rk6-hF3lqwn8a2igQjBuRz7JOV9lJJrNYlC7Xk18Zwo,2930
6
+ flowllm/client/mcp_client.py,sha256=dFJvHqqVpUv7icIUNKdJpfQI1FXx3zF76Lgnbyyp8Go,4867
7
+ flowllm/client/sync_mcp_client.py,sha256=Csv5hwlPDDCktM9qqLqdQkSG039ooiSurN5DMcJfrq8,4305
8
+ flowllm/config/__init__.py,sha256=fUjhShdU7qN6hfj7blDt7nHBQGlWwbhaa_p9_6vDpg8,57
9
+ flowllm/config/default.yaml,sha256=aMbEVThmwd7T-d9s3ovj8ljcIj-rNTMSJjGunXZQ3Vo,2015
10
+ flowllm/config/empty.yaml,sha256=Ysnu12YDBo9fJ2F6ha2rhEgDiUD7KbkqNYZ2TVk28V8,625
11
+ flowllm/config/pydantic_config_parser.py,sha256=J6o0NwimyLTMhKmSkmlNXv71JngzgupY9EFuBzqr7ts,6942
12
+ flowllm/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ flowllm/context/base_context.py,sha256=NTP6EzfIlcjvwT5-wYDL5_gDoH88rAxTqsknR97txYg,2227
14
+ flowllm/context/flow_context.py,sha256=-r96PgXC7BXVjA6bbUKw_cI5r3VRgQJ0AqG3iES4xSw,463
15
+ flowllm/context/prompt_handler.py,sha256=LbMJDwrzz8HF7HVDyphVSWI1X4QHMebJqLP4XeXkXOE,2667
16
+ flowllm/context/registry.py,sha256=zJf8SYi8ziFTdf2EG9Ut2_3sxEffchrl81W-VbcoEns,1110
17
+ flowllm/context/service_context.py,sha256=PnLiH1AwcYxpg6YAsVin2y82QDvbYmt8eg8qsJom3cw,5786
18
+ flowllm/embedding_model/__init__.py,sha256=jHxnI2xySqYcu7Y2wxmlmpIyYeKH_4PuNCBNvouXhEE,78
19
+ flowllm/embedding_model/base_embedding_model.py,sha256=oIySUu6_ROEXw13jtKYUtnL0bgBQdHtNZqnPPxatG9I,8021
20
+ flowllm/embedding_model/openai_compatible_embedding_model.py,sha256=N873ZlMdoB6iRu-oXkXlNNkIdH6F4hFN3ND7EA0FcwA,5490
21
+ flowllm/enumeration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ flowllm/enumeration/chunk_enum.py,sha256=EYB0a84qtrph5H7h_m05Qeo5B00B3xnSOt9KBb5CCJY,152
23
+ flowllm/enumeration/http_enum.py,sha256=ddIYeVz2J8CInzEkhWbz1rPe0qh2FVfryNNE1uc1ioM,141
24
+ flowllm/enumeration/role.py,sha256=SFMGXmwYFndGIwbr9GxS3OIoHIZ_nO23DeRnqpV4U3g,133
25
+ flowllm/flow/__init__.py,sha256=m2SCRH8CbDGsYXaUn99FGD9bz5KoDpLAcFu1GXu3GCo,22
26
+ flowllm/flow/base_flow.py,sha256=wngyIzkKMbv_tI_kSGnQuoU1kiC7KKvGz3t2R-ziyMk,2445
27
+ flowllm/flow/base_tool_flow.py,sha256=eC-V9kafecsXJixqXGfmD1DF70tA8ClM2f4rnW2K1vU,368
28
+ flowllm/flow/gallery/__init__.py,sha256=fT1aFrcw-QvFkEnPkOXHMZNK9IDapH0U_iEfwRbq7oI,391
29
+ flowllm/flow/gallery/cmd_flow.py,sha256=nqwMufrJWsJLmNaIVwJ6M11Hnxfpl1FvW07EC95qzN0,337
30
+ flowllm/flow/gallery/code_tool_flow.py,sha256=s-97BHplWO4Me4eTPNDltZL7XcGIAsz8IBL86mMoiVk,1075
31
+ flowllm/flow/gallery/dashscope_search_tool_flow.py,sha256=RxyWNQ-h0tt7236H7fAURqDEKNvccI5jGQA07TAKbLg,1153
32
+ flowllm/flow/gallery/deepsearch_tool_flow.py,sha256=_3JUiNivDGZxo-i1zHtX3MPMuqJSZXEZ2A2Mm_IUIY8,1426
33
+ flowllm/flow/gallery/expression_tool_flow.py,sha256=U0s9znCPSFwuqc7SalidjDGI-0kr9KGK3fWEQCN_q58,665
34
+ flowllm/flow/gallery/mock_tool_flow.py,sha256=InDQnMgHKUoiMbpUQ4Fa7HJaQ6TczbFjvZ7R2onZycE,2424
35
+ flowllm/flow/gallery/tavily_search_tool_flow.py,sha256=DJeHx-ry4cAOaVsRy28Kob3ecwnq41bsAo0gTmokArE,1046
36
+ flowllm/flow/gallery/terminate_tool_flow.py,sha256=6BgJE81ODLXXvc6GH6n1_twh5O052zHB62PEGm7OtH8,1103
37
+ flowllm/flow/parser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ flowllm/flow/parser/expression_parser.py,sha256=E8ZGmrdFpOgUQBtXxtVXb-BD7RUtfLkcWsIQBKTqdcA,5990
39
+ flowllm/llm/__init__.py,sha256=c2akU1k4IVT6PoW3FdKlFmQNZj7MVCzV_VTUw5VpDrc,99
40
+ flowllm/llm/base_llm.py,sha256=6YDlb9B9q4zQGQjFLVKNdd7JoELws9IzHebs2nDfUzc,9554
41
+ flowllm/llm/litellm_llm.py,sha256=EcgPMUo3i9TJ440bVwHzMQC8zuzSoYVdRdsr94jFziA,19387
42
+ flowllm/llm/openai_compatible_llm.py,sha256=MKbe4-p4NkCBCCkrty0mFsBTRpXctI-7rz0-2kzvNQo,18534
43
+ flowllm/op/__init__.py,sha256=4tRRZGMB3g_ketMW9Tk3fUcxkGAmNjmzfZWHeF4Jfbg,201
44
+ flowllm/op/base_llm_op.py,sha256=vDbXuhv1s94FmRCk6W55Y5A1qrJMCoT6LyfZjUwJykA,2669
45
+ flowllm/op/base_op.py,sha256=F-wdUwYfFWr-UJXJDN9qxI7B87ETfGidPvbakziYs3U,4147
46
+ flowllm/op/base_ray_op.py,sha256=-nRbad0pQ4qkZaDbonBDf6qh_dzktzOTCc-XkiLiIT4,11238
47
+ flowllm/op/parallel_op.py,sha256=Q66uB-uINsBj_m6NH140kiQPN1o9aw-wkc_5y74EaRY,551
48
+ flowllm/op/sequential_op.py,sha256=F8YTNCvPL0WsC_6Al9utnCErGnnnsEpaw4MVeUX3Skk,477
49
+ flowllm/op/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ flowllm/op/agent/react_op.py,sha256=2pL19P3cD-pUjimCBWUhdVE_B6dxcjLH3empU12L5IA,3683
51
+ flowllm/op/agent/react_prompt.yaml,sha256=XL8NLutlT5cuJAbWxw1Acu4NKuBoHx5h9iXVr-c30js,1552
52
+ flowllm/op/akshare/__init__.py,sha256=PaCPzBv-csRgmtmBjoYqxvOgAB3Vp8EeSGP3rGw6rc8,178
53
+ flowllm/op/akshare/get_ak_a_code_op.py,sha256=Pa766YbR_SPLHbQZQpW0UBBUBcXqigeEj10ypp3V3K4,3855
54
+ flowllm/op/akshare/get_ak_a_code_prompt.yaml,sha256=NwGJygecUwspQvrg98GdMpcmQESpZ2Kf5YprhM2PyZU,608
55
+ flowllm/op/akshare/get_ak_a_info_op.py,sha256=R0O4Ze_1oNjNIREJd6SoANWewrAnasg8R033lbqF81o,4497
56
+ flowllm/op/code/__init__.py,sha256=5lV5jHJ-qTdyf5yprrgWZTmu5n68T2gXFByhTIMI_I0,43
57
+ flowllm/op/code/execute_code_op.py,sha256=y6_CkllKJpxPqD0c6IVcbluK9RK8lCKifDIoCHqFHdE,1114
58
+ flowllm/op/gallery/__init__.py,sha256=5S2pzO65wOpE7PnirS6FiBN1uEm49Y40PZiW9EnGMn0,112
59
+ flowllm/op/gallery/mock_op.py,sha256=3GfqtOQm87A9TmZTD5Z4jcAxqPbtvmNQA7qTFcp897E,664
60
+ flowllm/op/gallery/terminate_op.py,sha256=dHiXONYDXkhePsmzAMa8FRktodZroB_G-UXApTNME3w,866
61
+ flowllm/op/search/__init__.py,sha256=iCxX7lBOWmgBM-xiLUN3SAB3LtYiS4Dk9ZEew-vlIBM,160
62
+ flowllm/op/search/dashscope_deep_research_op.py,sha256=FjWsk7UIIj6P3rqgcl9Nvo7BhIJGHHcOF4F-AltfZfo,11498
63
+ flowllm/op/search/dashscope_search_op.py,sha256=qlCOZLNlb8K4VCfOyrcQ21iNPojVPBujOWgKcNbzcEA,6931
64
+ flowllm/op/search/dashscope_search_prompt.yaml,sha256=NPsS3QCo8xlRpWw7fyMpuYBeOXSAtXscwGO-cVgUNFw,355
65
+ flowllm/op/search/tavily_search_op.py,sha256=F9gD0rLRo5sTvoeSP8CW2nqoAyDLNJjBYNU5-eH98z8,3814
66
+ flowllm/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ flowllm/schema/flow_request.py,sha256=jaOgEJ7XRWNgS_QTCBOOsa6hKtdgqnXVC7S4Vi6lMBg,338
68
+ flowllm/schema/flow_response.py,sha256=BusrfkJ8OCGk9Tp1KCWVSt33L2t_pYpn9QRqS0bjDcw,323
69
+ flowllm/schema/message.py,sha256=yxbKvH7TRECozUYdm141q84QGoqyOe3krSXgzWRdWHs,1220
70
+ flowllm/schema/service_config.py,sha256=Gaw-EKuwc7kmdR1yaVN04qruaESeUSguivK4JUfCPBQ,2324
71
+ flowllm/schema/tool_call.py,sha256=lz8x5hVuF2w05QHscgWmWuyfvU_FVxp7Ut0_L8oy1ig,3959
72
+ flowllm/schema/vector_node.py,sha256=Urs9EyzzjuQVYPCB_Pfp0iK2npWWCJSXdT6uDLdT05w,362
73
+ flowllm/service/__init__.py,sha256=Jr-f0i1yCIoM4XZ3SbOcqMU81Np3YgNZs6z36YfUpzQ,110
74
+ flowllm/service/base_service.py,sha256=6KJnIVkaIBNHwtQY83LmEMoTiMK5qI0ZtNMmIVjEZ5E,2335
75
+ flowllm/service/cmd_service.py,sha256=TfN2TLVNR75jUcAgjeOkxsA7ORCkERvRkuCE3Get7f0,464
76
+ flowllm/service/http_service.py,sha256=Kidb-J6FYpAtKhdH2pawFwPnrBTSEuwmT8iK6nMd2cQ,2807
77
+ flowllm/service/mcp_service.py,sha256=DR116-EeFBI_Sqbxu0X2NJ1e4cD8-T6kTYzPEPYsCuY,1889
78
+ flowllm/storage/__init__.py,sha256=wlGDDqp6nM4TLoEAXtSglgB0-K2YHAq_DNnsHTBQj8s,41
79
+ flowllm/storage/cache/__init__.py,sha256=KyLfUg3gJ4SvHMRagtZDL8cp5s5SRsN9H-_y4uRf2II,34
80
+ flowllm/storage/cache/cache_data_handler.py,sha256=fNnVwKOTOL3fZfukIN2gy3txlxiwr3CR9t3tVnIusvw,2700
81
+ flowllm/storage/cache/data_cache.py,sha256=cVz20JUkGgXzB5YgZiyeiBYpA0nRFyBtxhgVVQkFeA4,12144
82
+ flowllm/storage/vector_store/__init__.py,sha256=0DH2mkNiQ_cB5yPzm2Xc-7qsFHz1ytMkGUptWGZkyuU,143
83
+ flowllm/storage/vector_store/base_vector_store.py,sha256=V5b3kux6rJROjyMZzzHu_09ornvO_zZzcPgzZFF8Hv0,1635
84
+ flowllm/storage/vector_store/chroma_vector_store.py,sha256=BHcfhMBBDaoQOywfhYgp87v6OjTf0ePyTI2h-MWQywc,7067
85
+ flowllm/storage/vector_store/es_vector_store.py,sha256=Idkj2IVnXBc6Hbqs6A76LbiP-1pMZbWSECYogWy27Do,8452
86
+ flowllm/storage/vector_store/local_vector_store.py,sha256=p8xg2cmv17bm1UYXZBhLMAGulOE8v70Iw4oTM0Ls61s,10396
87
+ flowllm/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ flowllm/utils/common_utils.py,sha256=v9vTK_FrOsyXNZN2-CRJ6zLrCqaSX0-LNpt6IFt6sNg,1232
89
+ flowllm/utils/fetch_url.py,sha256=pOYiliL4kTGQKERCHrFhammBsbv9XzSvVyBQDMgXKEY,4404
90
+ flowllm/utils/llm_utils.py,sha256=ywhf1LGe2aKEaL5PyOpoOAbiekrQVOcpxUJ4ARPioQQ,1121
91
+ flowllm/utils/ridge_v2.py,sha256=XIn6nu4jUV7_QUCeyhSEhm-4ltueaS7JdbDQmSQFnRE,1802
92
+ flowllm/utils/singleton.py,sha256=No3otyPDRHu6wQuFRC-w28MkbommVFTLd7H4mT6-Zos,213
93
+ flowllm/utils/timer.py,sha256=8aj3dIYOyxNDNdlcitezdepxEptqkx69aw6JNFWsr30,1492
94
+ flowllm-0.1.2.dist-info/licenses/LICENSE,sha256=kFfPsL7YvEW4jPATpyvUPdtEgftLK53zQrVYJ0eBASY,11337
95
+ flowllm-0.1.2.dist-info/METADATA,sha256=cMEQ5Agae0ktU38cIPqBJfBN5OAVKN2WS6gRrsN8ehg,14756
96
+ flowllm-0.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
97
+ flowllm-0.1.2.dist-info/entry_points.txt,sha256=PcKC61HCKtF4ONb4HnrIY6J2JeV1bsi_l0O2m99A2Wg,45
98
+ flowllm-0.1.2.dist-info/top_level.txt,sha256=a2tZBwbrnw4uiydMI5kAEGz-cxG25rf6v0QM1sYIrjs,8
99
+ flowllm-0.1.2.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ flowllm = flowllm.app:main
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2024 Alibaba Group
189
+ Copyright 2024 FlowLLM
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -0,0 +1 @@
1
+ flowllm
@@ -1,66 +0,0 @@
1
- flowllm-0.1.0.dist-info/licenses/LICENSE,sha256=CpH4VoknEI82jjSPd8K3jQLwvrRAM9LwJAOnppzo-Jk,11343
2
- llmflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- llmflow/app.py,sha256=lArBS_VusANTkdzAT2deS14HY5_trVCweKfSX45jqPo,1621
4
- llmflow/mcp_server.py,sha256=hO4QoqKSqaJJ42cVwuLwQ-MgVKn0UB7gQcUS7MOcgu8,3086
5
- llmflow/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- llmflow/config/config_parser.py,sha256=htypaDcT_-he-wexG75usKkQXHyOaDbQAwANWq5aSbI,3214
7
- llmflow/config/mock_config.yaml,sha256=0I66Tz5sXHgU-_EoO8hOyqXEmncXTLoS6JoPkizC6jw,995
8
- llmflow/embedding_model/__init__.py,sha256=u5QQPmBmJ1ISom5bI--vrAldMZ3RlMEhY5Uh0wNoLVI,185
9
- llmflow/embedding_model/base_embedding_model.py,sha256=vijZE1k2Q27wRrDSF2UYZ1I70Hj9iZPkdiWC_-t4csI,4298
10
- llmflow/embedding_model/openai_compatible_embedding_model.py,sha256=7y7ttySiB3_dqwQh9d6fk0KgJ48-97-0yQ1ThgLpc8c,3549
11
- llmflow/enumeration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- llmflow/enumeration/agent_state.py,sha256=BCBj13fm29oTb-MdsVtbW_flmsWEAYpideMD5xkG2B4,143
13
- llmflow/enumeration/chunk_enum.py,sha256=EYB0a84qtrph5H7h_m05Qeo5B00B3xnSOt9KBb5CCJY,152
14
- llmflow/enumeration/http_enum.py,sha256=ddIYeVz2J8CInzEkhWbz1rPe0qh2FVfryNNE1uc1ioM,141
15
- llmflow/enumeration/role.py,sha256=SFMGXmwYFndGIwbr9GxS3OIoHIZ_nO23DeRnqpV4U3g,133
16
- llmflow/llm/__init__.py,sha256=u6FdiMYZMbnMbCgOJ-_4vwfOkNtpoG1jxwVhJTWOIhc,142
17
- llmflow/llm/base_llm.py,sha256=EtaUpeFX-gEApwRJYkIdfVjKivbFwg5tGSe6P9lZrHM,5906
18
- llmflow/llm/openai_compatible_llm.py,sha256=ib6aUiFEsj2i2G8yP5grnV-x2LIDIedU2rWj50FYbAU,11761
19
- llmflow/op/__init__.py,sha256=aFyZt6OD_FdXAESTnOdXVfcvQ47JvOcMLxCxNbs5qiE,444
20
- llmflow/op/base_op.py,sha256=vQroEM8eoRRWnfsPN5c_FQBxUOnGVObzUxEuoQ3wArc,4901
21
- llmflow/op/mock_op.py,sha256=_mWuRayUyrAebmawbzISLAXN2UBjZNRVPZGL7R3Njrs,639
22
- llmflow/op/prompt_mixin.py,sha256=MeD9QSy95It2UhCnfSl1qTHY6DGh2h5OAcqZw99VNdE,2217
23
- llmflow/op/react/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- llmflow/op/react/react_v1_op.py,sha256=rx-paa046IkZcj-92D1lqFXShelHrSddKdWfuVXZW9g,3923
25
- llmflow/op/react/react_v1_prompt.yaml,sha256=XL8NLutlT5cuJAbWxw1Acu4NKuBoHx5h9iXVr-c30js,1552
26
- llmflow/op/vector_store/__init__.py,sha256=xPNPugGcV9h2p5p83mII-fSTwAWgtjPH8pIYQeRhozo,465
27
- llmflow/op/vector_store/recall_vector_store_op.py,sha256=AfRKZ8K9iFuG3RgIei-ZgcP7l5oyL1nh_L5IuFJRqFQ,2020
28
- llmflow/op/vector_store/update_vector_store_op.py,sha256=ti3fQDaCxlGxTmJzitYhpcXbRviIU1Nb0rXKpxdvbMg,1124
29
- llmflow/op/vector_store/vector_store_action_op.py,sha256=4TKDvVWPmJrNCser7qlbXMISMh5JAdKjt5Skqn1l8uI,2071
30
- llmflow/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- llmflow/pipeline/pipeline.py,sha256=QLmOyVeT8RsZyxPRUuucbHlOQ9BC_ctO2436rRULZas,3493
32
- llmflow/pipeline/pipeline_context.py,sha256=JYsReQKoejMi08gJ_ya1QiGM6mBqOaVERWcfF4IECuI,961
33
- llmflow/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- llmflow/schema/app_config.py,sha256=Ql8NLtGSLdkYd3ILBSIajKZhZapsoDgiZSS306bc0yo,2020
35
- llmflow/schema/experience.py,sha256=Al50tleJakm1f7kO75pnCeo6kEG_D4TkQ35viD5sERA,4881
36
- llmflow/schema/message.py,sha256=_zDuNUY2rFhNURv-1lEsQ_i7detryCrtznlD_U3oMFU,2122
37
- llmflow/schema/request.py,sha256=qHzQGa8nUoDHGzMLwujR03z3yXQwgxSX9hPrSjXlD3s,801
38
- llmflow/schema/response.py,sha256=KHdXX6u3E73QbC4sOIYC-jFClclyMIBY_FnrnZIoodQ,805
39
- llmflow/schema/vector_node.py,sha256=2s6YALIYtj1n7iYsfA7W0WhVunuQBobm8rQoMyAgF3Y,361
40
- llmflow/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- llmflow/service/llmflow_service.py,sha256=Hpi_9ZfrJBrESRQUGB39sl640rVezkTTRtNg2aLrJVo,4314
42
- llmflow/tool/__init__.py,sha256=A9hPcg6zX0O5k9_A6fOVbTj5wiMbUjuNFFnZLlweBBA,341
43
- llmflow/tool/base_tool.py,sha256=3iCvqsh-SKOfIXDuR5XhtkgzjBsmgoj9YEnPxRchDNE,2633
44
- llmflow/tool/code_tool.py,sha256=SivJxGZrzFOJ0c-wYU8ftM6AdFdQOnFOxZdTATbQnss,1190
45
- llmflow/tool/dashscope_search_tool.py,sha256=7MHm-qATu6CsB4_8tSsjWV_61fC758DbqgboRD0DaDE,6136
46
- llmflow/tool/mcp_tool.py,sha256=c1dYW0TLERov15BtwPJPcvl6L1h-O3Xn4SI9VjeuqIQ,2918
47
- llmflow/tool/tavily_search_tool.py,sha256=eAtaVIzcURLcm_VA4HjOZJMQs0YjkwzBjyk9JxfcfDo,3646
48
- llmflow/tool/terminate_tool.py,sha256=6HR-uUlgzZoI6y8QTu30ug91kUUvPIVVO6iuo3uBlWU,825
49
- llmflow/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- llmflow/utils/common_utils.py,sha256=RZ7lq_j9tyVkSrlaqfsrAcEIiu58BXHKIdueHtGPU84,363
51
- llmflow/utils/file_handler.py,sha256=-M_p4AGn5FtaD7wrzdmMFQvsQtr_4IsS05j9gizobL4,664
52
- llmflow/utils/http_client.py,sha256=LJgdbzdQ8e7X6D_pyy0JQ3RY5AItfVNiNpOEJsJOqu8,6196
53
- llmflow/utils/op_utils.py,sha256=q2dU5G4-fmOhXogJG5ca7uQczuHDYu4rQooWWgmysz8,3807
54
- llmflow/utils/registry.py,sha256=OFbmp1y5aVtqczPDrfT74M8hLoNeoWKcOdsT-OczoUc,921
55
- llmflow/utils/singleton.py,sha256=No3otyPDRHu6wQuFRC-w28MkbommVFTLd7H4mT6-Zos,213
56
- llmflow/utils/timer.py,sha256=qccPMh27euWIE9m6hZ1N_kDRwfEN97qPhZis68ktLNs,1443
57
- llmflow/vector_store/__init__.py,sha256=Zk9mkH3ii9WPchQcG_KHFO89jwHIKZvuvFpr8WRmy-E,282
58
- llmflow/vector_store/base_vector_store.py,sha256=_ciUZ52bqyDiaFzKzB5me_wYXsrNDt0PyQzBQQlgYO4,5517
59
- llmflow/vector_store/chroma_vector_store.py,sha256=IcTL2-jqy8Tltkml5dn6L29nDcDhX59f500fqeTp5z8,7084
60
- llmflow/vector_store/es_vector_store.py,sha256=9kl7KmQBOZSKlHnyrVNXGx4o7Xi7LRurAbB0-8_dPUo,8447
61
- llmflow/vector_store/file_vector_store.py,sha256=9KbixHdqm8R32xMVmNqVXqjhjvv0maAsvMnuW7SkII0,6184
62
- flowllm-0.1.0.dist-info/METADATA,sha256=89YrxJzuRmT4b_SRXlRgHPK2gff83CeY7StnYuJAMmA,24257
63
- flowllm-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
64
- flowllm-0.1.0.dist-info/entry_points.txt,sha256=LxjuRXqMQ3J95vPC_1i7OAhlJX1rXmklOYi2KOLfKpM,83
65
- flowllm-0.1.0.dist-info/top_level.txt,sha256=Hv7BK14mg2npiZaCmy-T2TSABJZHh7YKrOeEs0gPrPI,8
66
- flowllm-0.1.0.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- [console_scripts]
2
- llmflow = llmflow.app:main
3
- llmflow_mcp = llmflow.mcp_server:main
@@ -1 +0,0 @@
1
- llmflow