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.

@@ -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.17
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/img/flock.png" width="600"><br>
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/img/flock_cli.png" width="200"><br>
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
- Documentation in progress!
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=nlSnPrc1pnYEFQXcL_wCqPI6g1Jr7AzNtmGoOPs0zKw,936
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.17.dist-info/METADATA,sha256=uluO8ie9LjTnlmLXTdaNTvanGOE-tsIcGdYB-tPKJjk,16930
384
- flock_core-0.2.17.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
385
- flock_core-0.2.17.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
386
- flock_core-0.2.17.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
387
- flock_core-0.2.17.dist-info/RECORD,,
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,,