You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge pull request Pipelex#104 from Pipelex/release/v0.4.3
### Fixed
- **Removed deprecated Gemini 1.5 models**: Removed `gemini-1.5-flash` and `gemini-1.5-pro` from the VertexAI integration as they are no longer supported
- Fixed multiple import statements across the codebase
### Documentation
- **Enhanced MkDocs search**: Added search functionality to the documentation site
- **Proofreading improvements**: Fixed various typos and improved clarity across documentation
### Refactor
- Mini refactor: changed kajson dependency to `kajson==0.1.5` (instead of `>=`) to tolerate temporary breaking changes from kajson
Copy file name to clipboardExpand all lines: CHANGELOG.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,18 @@
1
1
# Changelog
2
2
3
+
## [v0.4.3] - 2025-06-19
4
+
5
+
### Fixed
6
+
-**Removed deprecated Gemini 1.5 models**: Removed `gemini-1.5-flash` and `gemini-1.5-pro` from the VertexAI integration as they are no longer supported
7
+
- Fixed multiple import statements across the codebase
8
+
9
+
### Documentation
10
+
-**Enhanced MkDocs search**: Added search functionality to the documentation site
11
+
-**Proofreading improvements**: Fixed various typos and improved clarity across documentation
12
+
13
+
### Refactor
14
+
- Mini refactor: changed kajson dependency to `kajson==0.1.5` (instead of `>=`) to tolerate temporary breaking changes from kajson
15
+
3
16
## [v0.4.2] - 2025-06-17
4
17
5
18
- Fixed the inheritance config manager method (Undocumented feature, soon to be removed)
This modular, step-by-step process, guided by the structured data models, allows Pipelex to generate a complete, well-structured screenplay from a single, simple pitch. It's a powerful demonstration of building complex, creative AI agents.
112
+
113
+
This modular, step-by-step process, guided by the structured data models, allows Pipelex to generate a complete, well-structured screenplay from a single, simple pitch. It's a powerful demonstration of building complex, creative AI agents.
Copy file name to clipboardExpand all lines: docs/pages/installation/index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ Pipelex requires `python` version `3.10` or above, and access to an LLM, via an
6
6
7
7
## Getting Started
8
8
9
-
Along with [our Documentation](../quick-start/index.md), we recommend you review it before any further usage: [Cookbook](https://github.com/Pipelex/pipelex-cookbook).
9
+
Along with our [Quick Start Guide](../quick-start/index.md), we recommend you check out our [Cookbook](https://github.com/Pipelex/pipelex-cookbook) for practical examples.
Copy file name to clipboardExpand all lines: docs/pages/pipelex-paradigm-for-repeatable-ai-workflows/index.md
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,9 @@ Pipelex introduces **knowledge pipelines**: a way to capture these workflow step
12
12
13
13
Knowledge refers to information you input from various data sources such as documents, PDFs, images, or information output by our pipes. There are different kinds of knowledge.
14
14
15
-
In traditional programming, we work with data types: strings, integers, booleans (true/false), etc. But **knowledge work operates at a higher level.** Take for instance a *"non-compete clause from a contract"* and a *"description of a flower"*: they're both text, both are stored as strings, but they represent fundamentally different concepts. You can ask AI to extract the duration in months from a non-compete clause. You can ask AI to render a flower description as a Monet-style painting. But if you try the reverse, it doesn't make sense.
15
+
### From Data Types to Concepts
16
+
17
+
In traditional programming, we work with data types: strings, integers, booleans (true/false), etc. But **knowledge work operates at a higher level.** Take for instance a *"non-compete clause from a contract"* and a *"description of a flower"*: they're both text, both are stored as strings, but they represent fundamentally different concepts. You can ask an AI to extract the duration in months from a non-compete clause. You can ask an AI to render a flower description as a Monet-style painting. But if you try the reverse, it doesn't make sense.
16
18
17
19
This is why Pipelex introduces **Concepts: typing with meaning attached.**
18
20
@@ -22,20 +24,20 @@ This is why Pipelex introduces **Concepts: typing with meaning attached.**
22
24
23
25
Concretely, in Pipelex, a piece of knowledge is an object in the working memory. It could be anything, so we call that "stuff", and our Python class for it is `Stuff`.
24
26
25
-
Stuff can be pretty basic, like plain text or an image, but it can also be structured with attributes, comprise lists, include other nested stuff, you get it... it's content is actually a `Pydantic BaseModel`. Also, each Stuff knows what concept it belongs to, e.g., `Text` or `NonCompeteClause` or `FlowerDescription`.
27
+
Stuff can be pretty basic, like plain text or an image, but it can also be structured with attributes, comprise lists, include other nested stuff, you get it... the stuff's content is actually a `Pydantic BaseModel`. Also, each Stuff knows what concept it belongs to, e.g., `Text` or `NonCompeteClause` or `FlowerDescription`.
26
28
27
29
And with that we are fully equipped for Lego-style plug-n-play:
28
30
29
31
- Each pipe declares what inputs it uses, indicating the expected concept(s)
30
32
- Each pipe also declares what it outputs
31
33
32
-
So when you connect two pipes, Pipelex systematically checks that they are compatible. Actually it's even more powerful than that: imagine you have a sequence of 5 pipes, maybe pipe #4 takes two inputs, one given from the output of previous pipe #3 and the other one from the output of pipe #1. Pipelex checks that running the previous steps will have generated the required stuff and with the required concepts.
34
+
So when you connect two pipes, Pipelex systematically checks that they are compatible. Actually, it's even more powerful than that: imagine you have a sequence of 5 pipes, maybe pipe #4 takes two inputs, one given from the output of previous pipe #3 and the other one from the output of pipe #1. Pipelex checks that running the previous steps will have generated the required stuff and with the required concepts.
33
35
34
36
What if you have a pipe that requires a `Text` input, to translate it to Spanish for instance, then it should also accept a `FlowerDescription`, right? Yes, the greater includes the lesser. This is expressed in Pipelex by indicating that concept `FlowerDescription`**refines** concept `Text`.
35
37
36
38
One problem that developers face when working with LLMs is that LLMs always try to answer your queries, and it pushes them to hallucinate. For instance, if you're trying to extract structured purchase details from an invoice, and there's a bug in your system so instead of receiving an invoice as input, the LLM received a picture of a flower, or nothing at all, there's a good chance it will generate a 100% hallucinated mock invoice. Pipelex prevents this kind of bugs, first by making sure the pipeline makes sense a priori, but it can also check any input for compatibility with the expected concept.
37
39
38
-
**By letting you clearly assign concepts to the input and output stuff of your pipes, Pipelex makes sure that your pipeline makes sense, that it works in theory and detects any failure of meaning at the earliest stage possible in practice.**
40
+
**By letting you clearly assign concepts to the input and output stuff of your pipes, Pipelex makes sure that your pipeline makes sense, that it works in theory, and detects any failure of meaning at the earliest stage possible in practice.**
Copy file name to clipboardExpand all lines: docs/pages/quick-start/index.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ For illustration purposes, let's build **a character generator**. Each example r
13
13
14
14
### Write your first pipeline
15
15
16
-
You have to create a `.toml` library file in the `pipelex_libraries/pipelines` directory that will store your pipe definition.
16
+
First, create a `.toml` library file in the `pipelex_libraries/pipelines` directory to store your pipe definition.
17
17
Run `pipelex init-libraries` to create this directory if it doesn't exist. For now, keep all your pipeline definitions inside that folder only.
18
18
19
19
`character.toml`
@@ -30,7 +30,7 @@ Think of it and then output the character description."""
30
30
31
31
### Run your first Pipelex script
32
32
33
-
You have to create a `.py` python file to run your script. You can save it anywhere in your repository.
33
+
Now, create a `.py` python file to run your script. You can save it anywhere in your repository.
34
34
35
35
`character.py`
36
36
```python
@@ -100,7 +100,7 @@ Let's say that we no longer want plain text as output but a rigorously structure
100
100
101
101
### Define the model
102
102
103
-
Using the [Pydantic Basemodel](https://docs.pydantic.dev/latest/) syntax, define your object structure as a Python class, in the `pipelex_libraries/pipelines` directory:
103
+
Using the [Pydantic BaseModel](https://docs.pydantic.dev/latest/) syntax, define your object structure as a Python class, in the `pipelex_libraries/pipelines` directory:
104
104
105
105
`pipelex_libraries/pipelines/characters.py`
106
106
```python
@@ -179,7 +179,7 @@ class CharacterMetadata(StructuredContent):
179
179
180
180
### **Let's use a template to fill prompts with data**
181
181
182
-
💡 Our template syntax is based on [Jinja2 syntax](https://jinja.palletsprojects.com/en/stable/). You can include a variable using the **classic**`{{ double.curly.braces }}` and, to make it simpler, we've added the possibility to just prefix your variable with the `@` symbol (recommended). Pipes now declare their required inputs explicitly with the `inputs` table:
182
+
💡 Our template syntax is based on [Jinja2 syntax](https://jinja.palletsprojects.com/en/stable/). You can include a variable using the **classic**`{{ double.curly.braces }}`, and to make it simpler, we've added the possibility to just prefix your variable with the `@` symbol (recommended). Pipes declare their required inputs explicitly with the `inputs` table:
0 commit comments