flock-core 0.2.17__py3-none-any.whl → 0.2.18__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.
Potentially problematic release.
This version of flock-core might be problematic. Click here for more details.
- flock/core/util/cli_helper.py +19 -0
- {flock_core-0.2.17.dist-info → flock_core-0.2.18.dist-info}/METADATA +66 -4
- {flock_core-0.2.17.dist-info → flock_core-0.2.18.dist-info}/RECORD +6 -6
- {flock_core-0.2.17.dist-info → flock_core-0.2.18.dist-info}/WHEEL +0 -0
- {flock_core-0.2.17.dist-info → flock_core-0.2.18.dist-info}/entry_points.txt +0 -0
- {flock_core-0.2.17.dist-info → flock_core-0.2.18.dist-info}/licenses/LICENSE +0 -0
flock/core/util/cli_helper.py
CHANGED
|
@@ -28,3 +28,22 @@ def display_banner():
|
|
|
28
28
|
)
|
|
29
29
|
console.print(banner_text)
|
|
30
30
|
console.print(f"[bold]white duck GmbH[/] - [cyan]https://whiteduck.de[/]\n")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def display_banner_no_version():
|
|
34
|
+
"""Display the Flock banner."""
|
|
35
|
+
banner_text = Text(
|
|
36
|
+
f"""
|
|
37
|
+
🦆 🐓 🐤 🐧
|
|
38
|
+
╭━━━━━━━━━━━━━━━━━━━━━━━━╮
|
|
39
|
+
│ ▒█▀▀▀ █░░ █▀▀█ █▀▀ █░█ │
|
|
40
|
+
│ ▒█▀▀▀ █░░ █░░█ █░░ █▀▄ │
|
|
41
|
+
│ ▒█░░░ ▀▀▀ ▀▀▀▀ ▀▀▀ ▀░▀ │
|
|
42
|
+
╰━━━━━━━━━━━━━━━━━━━━━━━━╯
|
|
43
|
+
🦆 🐤 🐧 🐓
|
|
44
|
+
""",
|
|
45
|
+
justify="center",
|
|
46
|
+
style="bold orange3",
|
|
47
|
+
)
|
|
48
|
+
console.print(banner_text)
|
|
49
|
+
console.print(f"[bold]white duck GmbH[/] - [cyan]https://whiteduck.de[/]\n")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.18
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -38,7 +38,7 @@ Requires-Dist: tavily-python>=0.5.0; extra == 'tools'
|
|
|
38
38
|
Description-Content-Type: text/markdown
|
|
39
39
|
|
|
40
40
|
<p align="center">
|
|
41
|
-
<img src="docs/
|
|
41
|
+
<img src="docs/assets/images/flock.png" width="600"><br>
|
|
42
42
|
<img alt="Dynamic TOML Badge" src="https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fwhiteducksoftware%2Fflock%2Frefs%2Fheads%2Fmaster%2Fpyproject.toml&query=%24.project.version&style=for-the-badge&logo=pypi&label=pip%20version">
|
|
43
43
|
<a href="https://www.linkedin.com/company/whiteduck" target="_blank"><img alt="LinkedIn" src="https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge&logo=linkedin&logoColor=white&label=whiteduck"></a>
|
|
44
44
|
<a href="https://bsky.app/profile/whiteduck-gmbh.bsky.social" target="_blank"><img alt="Bluesky" src="https://img.shields.io/badge/bluesky-Follow-blue?style=for-the-badge&logo=bluesky&logoColor=%23fff&color=%23333&labelColor=%230285FF&label=whiteduck-gmbh"></a>
|
|
@@ -69,7 +69,15 @@ Flock is a framework for orchestrating LLM-powered agents. It leverages a **decl
|
|
|
69
69
|
|
|
70
70
|
https://github.com/user-attachments/assets/bdab4786-d532-459f-806a-024727164dcc
|
|
71
71
|
|
|
72
|
+
## Table of Contents
|
|
72
73
|
|
|
74
|
+
- [Key Innovations](#key-innovations)
|
|
75
|
+
- [Examples](#examples)
|
|
76
|
+
- [Hello Flock!](#hello-flock)
|
|
77
|
+
- [It's not my type](#its-not-my-type)
|
|
78
|
+
- [Being pydantic](#being-pydantic)
|
|
79
|
+
- [Building a chain gang!](#building-a-chain-gang)
|
|
80
|
+
- [Installation](#installation)
|
|
73
81
|
|
|
74
82
|
|
|
75
83
|
## Key Innovations
|
|
@@ -96,7 +104,7 @@ https://github.com/user-attachments/assets/bdab4786-d532-459f-806a-024727164dcc
|
|
|
96
104
|
|
|
97
105
|
|
|
98
106
|
<p align="center">
|
|
99
|
-
<img src="docs/
|
|
107
|
+
<img src="docs/assets/images//flock_cli.png" width="200"><br>
|
|
100
108
|
|
|
101
109
|
## Examples
|
|
102
110
|
|
|
@@ -294,6 +302,58 @@ And BAM! Your finished data model filled up to the brim with data! 🎊
|
|
|
294
302
|
}
|
|
295
303
|
```
|
|
296
304
|
|
|
305
|
+
### Building a chain gang
|
|
306
|
+
|
|
307
|
+
Our `bloggy` is great, but what if we want to turn those amazing headers into full blog posts? Time to bring in a friend! 🤝
|
|
308
|
+
Let's see how easy it is to make agents work together 🔗
|
|
309
|
+
|
|
310
|
+
```python
|
|
311
|
+
from flock.core import Flock, FlockAgent
|
|
312
|
+
|
|
313
|
+
flock = Flock(model="openai/gpt-4o")
|
|
314
|
+
|
|
315
|
+
# First agent: Our trusty bloggy generates titles and headers! 📝
|
|
316
|
+
bloggy = FlockAgent(
|
|
317
|
+
name="bloggy",
|
|
318
|
+
input="blog_idea: str|The topic to blog about",
|
|
319
|
+
output=(
|
|
320
|
+
"funny_blog_title: str|A catchy title for the blog, "
|
|
321
|
+
"blog_headers: list[str]|List of section headers for the blog"
|
|
322
|
+
)
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
# Second agent: The content wizard that brings headers to life! ✨
|
|
326
|
+
content_writer = FlockAgent(
|
|
327
|
+
name="content_writer",
|
|
328
|
+
input=(
|
|
329
|
+
"funny_blog_title: str|The blog title to work with, "
|
|
330
|
+
"blog_headers: list[str]|The headers to expand into content"
|
|
331
|
+
),
|
|
332
|
+
output="blog_sections: list[BlogSection]|The fully written blog sections"
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
# Make them besties! 🤝
|
|
336
|
+
bloggy.hand_off = content_writer
|
|
337
|
+
|
|
338
|
+
# Add your dynamic duo to the flock
|
|
339
|
+
flock.add_agent(bloggy)
|
|
340
|
+
flock.add_agent(content_writer)
|
|
341
|
+
|
|
342
|
+
# Let them create some magic! 🎨
|
|
343
|
+
result = flock.run(
|
|
344
|
+
input={"blog_idea": "A blog about cats"},
|
|
345
|
+
start_agent=bloggy
|
|
346
|
+
)
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
Super simple rules to remember:
|
|
350
|
+
1. Point the first agent to the next one using `hand_off`
|
|
351
|
+
2. Make sure their inputs and outputs match up
|
|
352
|
+
|
|
353
|
+
That's all there is to it! `bloggy` comes up with amazing headers, and `content_writer` turns them into full blog sections. No more writer's block! 🎉
|
|
354
|
+
|
|
355
|
+
And this is just the beginning - you can chain as many agents as you want. Maybe add a proofreader? Or an SEO optimizer? But let's not get ahead of ourselves! 😉
|
|
356
|
+
|
|
297
357
|
So far we've barely scratched the surface of what flock has to offer, and we're currently hard at work building up the documentation for all the other super cool features Flock has up its sleeve! Stay tuned! 🚀
|
|
298
358
|
|
|
299
359
|
## Temporal Workflow Integration
|
|
@@ -308,7 +368,9 @@ Documentation in progress!
|
|
|
308
368
|
|
|
309
369
|
## Architecture
|
|
310
370
|
|
|
311
|
-
|
|
371
|
+
<img src="docs/assets/images/components_chart.png" width="800"><br>
|
|
372
|
+
|
|
373
|
+
<img src="docs/assets/images/flow_chart.png" width="800"><br>
|
|
312
374
|
|
|
313
375
|
|
|
314
376
|
## Requirements
|
|
@@ -32,7 +32,7 @@ flock/core/mixin/prompt_parser.py,sha256=eOqI-FK3y17gVqpc_y5GF-WmK1Jv8mFlkZxTcgw
|
|
|
32
32
|
flock/core/registry/agent_registry.py,sha256=YkYIyvFNjm7gYKRAiQQdOvVYMtsYH5cijfrv_GP4ZHc,4889
|
|
33
33
|
flock/core/tools/basic_tools.py,sha256=OwWaFu4NoVrc3Uijj56RY9XDDaP_mOnEa5B3wSWwwLE,4756
|
|
34
34
|
flock/core/tools/dev_tools/github.py,sha256=a2OTPXS7kWOVA4zrZHynQDcsmEi4Pac5MfSjQOLePzA,5308
|
|
35
|
-
flock/core/util/cli_helper.py,sha256=
|
|
35
|
+
flock/core/util/cli_helper.py,sha256=oJGbVaOolMKpXWqWKuT4VJUjyFnlUgHxtGyeK0IDJFg,1644
|
|
36
36
|
flock/core/util/hydrator.py,sha256=6qNwOwCZB7r6y25BZ--0PGofrAlfMaXbDKFQeP5NLts,11196
|
|
37
37
|
flock/core/util/input_resolver.py,sha256=g9vDPdY4OH-G7qjas5ksGEHueokHGFPMoLOvC-ngeLo,5984
|
|
38
38
|
flock/core/util/serializable.py,sha256=SymJ0YrjBx48mOBItYSqoRpKuzIc4vKWRS6ScTzre7s,2573
|
|
@@ -380,8 +380,8 @@ flock/workflow/activities.py,sha256=2zcYyDoCuYs9oQbnhLjCzBUdEi7d5IEIemKJ7TV_B8w,
|
|
|
380
380
|
flock/workflow/agent_activities.py,sha256=NhBZscflEf2IMfSRa_pBM_TRP7uVEF_O0ROvWZ33eDc,963
|
|
381
381
|
flock/workflow/temporal_setup.py,sha256=VWBgmBgfTBjwM5ruS_dVpA5AVxx6EZ7oFPGw4j3m0l0,1091
|
|
382
382
|
flock/workflow/workflow.py,sha256=I9MryXW_bqYVTHx-nl2epbTqeRy27CAWHHA7ZZA0nAk,1696
|
|
383
|
-
flock_core-0.2.
|
|
384
|
-
flock_core-0.2.
|
|
385
|
-
flock_core-0.2.
|
|
386
|
-
flock_core-0.2.
|
|
387
|
-
flock_core-0.2.
|
|
383
|
+
flock_core-0.2.18.dist-info/METADATA,sha256=GG1FxcQ-Bh96SEo-dQvASbumhdiaAoBh7zNpYYKtgrM,19050
|
|
384
|
+
flock_core-0.2.18.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
385
|
+
flock_core-0.2.18.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
|
|
386
|
+
flock_core-0.2.18.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
|
|
387
|
+
flock_core-0.2.18.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|