Skip to content

Commit 5df40f1

Browse files
authored
Merge pull request #36 from GlisseManTV/release-candidate
v0.8.0
2 parents 1931580 + 79b885b commit 5df40f1

24 files changed

+4840
-524
lines changed

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,17 @@ body:
1414
attributes:
1515
label: Used Way
1616
description: How are you using the service?
17+
options:
18+
- Docker
19+
- Python
20+
validations:
21+
required: true
22+
23+
- type: dropdown
24+
id: used-way
25+
attributes:
26+
label: Protocol
27+
description: What protocol are you using?
1728
options:
1829
- SSE
1930
- Python
@@ -35,7 +46,7 @@ body:
3546
attributes:
3647
label: External MCP Server
3748
description: If you selected "External MCP server" above, please specify which server you are using.
38-
placeholder: ex. server-name or URL
49+
placeholder: ex. server-type
3950

4051
- type: dropdown
4152
id: image-provider
@@ -58,6 +69,9 @@ body:
5869
options:
5970
- latest
6071
- dev-latest
72+
- alpha-latest
73+
- beta-latest
74+
- rc-latest
6175
default: 0
6276
validations:
6377
required: true
@@ -67,7 +81,7 @@ body:
6781
attributes:
6882
label: Version
6983
description: Which version are you using?
70-
placeholder: ex. v0.7.0
84+
placeholder: ex. v0.7.0 (You'll find this information in docker starting logs)
7185
validations:
7286
required: true
7387

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,3 +366,10 @@ FodyWeavers.xsd
366366
/ion = ($versionInfo ConvertFrom-Json).MajorMinorPatch
367367
/ion = v
368368
/_oldGitVersion.yml
369+
370+
/LLM_Export/Documentation/image.png
371+
/LLM_Export/Documentation/image-1.png
372+
/LLM_Export/Documentation/image-2.png
373+
/LLM_Export/Documentation/image-3.png
374+
/LLM_Export/Documentation/image-4.png
375+
/LLM_Export/Documentation/image-5.png
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ Whether you're building a project, generating reports, or archiving assets, this
1010

1111
| Tool | Purpose | Format |
1212
|------|--------|--------|
13-
| `create_excel(data, filename, persistent=True)` | Generate Excel files from arrays | `.xlsx` |
14-
| `create_csv(data, filename, persistent=True)` | Create CSV files from structured data | `.csv` |
15-
| `create_pdf(text, filename, persistent=True)` | Turn content into polished PDFs | `.pdf` |
16-
| `create_word (content, filename, persistent=True)` | Build Word documents with rich formatting | `.docx` |
17-
| `create_file(content, filename, persistent=True)` | Output any text-based file (`.py`, `.html`, `.json`, `.xml`, `.md`, etc.) | Any |
18-
| `create_presentation(slides_data, filename, persistent=True, title)` | Build dynamic presentations | `.pptx` |
19-
| `generate_and_archive(files_data, archive_format="zip", archive_name=None, persistent=True)` | **Pack multiple files into a single `.zip`, `.tar.gz`, or `.7z` archive** | `.zip`, `.tar.gz`, `.7z` |
13+
| `create_excel` | **Generate Excel files from arrays** | `.xlsx` |
14+
| `create_csv` | **Create CSV files from structured data** | `.csv` |
15+
| `create_pdf` | **Turn content into polished PDFs** | `.pdf` |
16+
| `create_word` | **Build Word documents with rich formatting** | `.docx` |
17+
| `create_file` | **Output any text-based file** (`.py`, `.html`, `.json`, `.xml`, `.md`, etc.) | Any |
18+
| `create_presentation` | **Build dynamic presentations** | `.pptx` |
19+
| `generate_and_archive` | **Pack multiple files into a single `.zip`, `.tar.gz`, or `.7z` archive** | `.zip`, `.tar.gz`, `.7z` |
20+
| `edit_document` | **Edit existing files in-place** | `.docx`, `.xlsx`, `.pptx` |
21+
| `review_document` | **Review and suggest improvements to existing files** | `.docx`, `.xlsx`, `.pptx`|
2022

2123
> 🔥 **Pro Tip**: Always use `generate_and_archive` when bundling multiple files — never mix individual creators!
2224

Documentation/HowToConfigure.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Docker (recommended)
2+
## builtin MCPO server
3+
### Configure the tool
4+
- Pull image with wanted tag
5+
- configure with env variables
6+
```yaml
7+
services:
8+
file-export-server:
9+
image: ghcr.io/glissemantv/owui-file-export-server:latest
10+
container_name: file-export-server
11+
environment:
12+
- FILE_EXPORT_DIR=/output
13+
ports:
14+
- "yourport:9003"
15+
volumes:
16+
- /your/export-data:/output # <==must match with the folder where the gen-server will build files
17+
18+
owui-mcpo:
19+
image: ghcr.io/glissemantv/owui-mcpo:latest
20+
container_name: owui-mcpo
21+
environment:
22+
- FILE_EXPORT_BASE_URL=http://file-export-server:9003/files # <== this url must point to file-export-server:yourport/files above
23+
- FILE_EXPORT_DIR=/output
24+
- PERSISTENT_FILES=true
25+
- FILES_DELAY=1
26+
- LOG_LEVEL=INFO
27+
- UNSPLASH_ACCESS_KEY=top-secret
28+
- IMAGE_SOURCE=local_sd
29+
- LOCAL_SD_URL=http://localhost:7860
30+
- LOCAL_SD_USERNAME=local_user
31+
- LOCAL_SD_PASSWORD=local_password
32+
- LOCAL_SD_DEFAULT_MODEL=sd_xl_base_1.0.safetensors
33+
- LOCAL_SD_STEPS=20
34+
- LOCAL_SD_WIDTH=512
35+
- LOCAL_SD_HEIGHT=512
36+
- LOCAL_SD_CFG_SCALE=1.5
37+
- LOCAL_SD_SCHEDULER=Karras
38+
- LOCAL_SD_SAMPLE=Euler a
39+
- OWUI_URL=http://localhost:8000
40+
ports:
41+
- "yourport:8000"
42+
restart: unless-stopped
43+
volumes:
44+
- /your/export-data:/output # <==must match with the folder where the file-server will host files
45+
depends_on:
46+
- file-export-server
47+
```
48+
### Configure Open WebUI
49+
1. Go to Admin settings \ Settings
50+
1. General
51+
1. Check "Enable API Key"
52+
2. External tools
53+
1. Add new tool
54+
2. Follow the insctruction below
55+
56+
**Auth must be "Session"**
57+
58+
![alt text](img/image.png)
59+
60+
2. User settings
61+
1. Account
62+
1. Generate new API key if not already done so
63+
64+
![alt text](img/image-4.png)
65+
66+
67+
68+
## SSE / HTTP transport server
69+
### Configure the tool
70+
- Pull image with wanted tag
71+
- configure with env variables
72+
```yaml
73+
services:
74+
file-export-server:
75+
image: ghcr.io/glissemantv/owui-file-export-server:latest
76+
container_name: file-export-server
77+
environment:
78+
- FILE_EXPORT_DIR=/output
79+
ports:
80+
- "yourport:9003"
81+
volumes:
82+
- /your/export-data:/output # <==must match with the folder where the gen-server will build files
83+
84+
owui-mcpo:
85+
image: ghcr.io/glissemantv/file-gen-sse-http:latest
86+
container_name: owui-mcpo
87+
environment:
88+
- FILE_EXPORT_BASE_URL=http://file-export-server:9003/files # <== this url must point to file-export-server:yourport/files above
89+
- FILE_EXPORT_DIR=/output
90+
- PERSISTENT_FILES=true
91+
- FILES_DELAY=1
92+
- LOG_LEVEL=INFO
93+
- UNSPLASH_ACCESS_KEY=top-secret
94+
- IMAGE_SOURCE=local_sd
95+
- LOCAL_SD_URL=http://localhost:7860
96+
- LOCAL_SD_USERNAME=local_user
97+
- LOCAL_SD_PASSWORD=local_password
98+
- LOCAL_SD_DEFAULT_MODEL=sd_xl_base_1.0.safetensors
99+
- LOCAL_SD_STEPS=20
100+
- LOCAL_SD_WIDTH=512
101+
- LOCAL_SD_HEIGHT=512
102+
- LOCAL_SD_CFG_SCALE=1.5
103+
- LOCAL_SD_SCHEDULER=Karras
104+
- LOCAL_SD_SAMPLE=Euler a
105+
- OWUI_URL=http://localhost:8000
106+
- OWUI_JWT_TOKEN=jwt-token-h # (only for edit/review used behind an external mcpo server / no longer used if you are using SSE/HTTP direct in OWUI)
107+
ports:
108+
- "yourport:9004"
109+
restart: unless-stopped
110+
volumes:
111+
- /your/export-data:/output # <==must match with the folder where the file-server will host files
112+
depends_on:
113+
- file-export-server
114+
```
115+
### Configure Open WebUI
116+
1. Go to Admin settings \ Settings
117+
1. General
118+
1. Check "Enable API Key"
119+
2. External tools
120+
1. Add new tool
121+
2. Follow the insctruction below
122+
- For SSE, use /sse endpoint
123+
- for http, use /mcp endpoint
124+
125+
**Auth must be "Session"**
126+
![alt text](img/image-3.png)![alt text](img/image-2.png)
127+
2. User settings
128+
1. Account
129+
1. Generate new API key if not already done so
130+
131+
![alt text](img/image-5.png)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Hey you're looking at the HowTo file for this project.
1+
# Hey you're looking at the HowToUse file for this project.
22
Unfortunately, it's currently empty.
33
I'll fill it with useful information soon.
44
If you want to help, feel free to open a PR.
Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,59 @@ I got good results with the following prompt:
8888
- Always return **only** the link provided by the tool (`url`).
8989
- Never invent local paths.
9090
- Respect file uniqueness (suffixes added automatically if necessary).
91-
### Office document revision (.docx or .xlsx or .pptx)
92-
If the user asks you to review a Word document with comments:
93-
**Review workflow (mandatory):**
94-
1. Call `tool_full_context_document_post` → to retrieve element indices.
95-
2. Call `tool_review_document_post` → pass the list of tuples `(element_index, comment)`.
96-
Never add extra content in step 3.
97-
For XLSX files, use the "index" field (e.g., "B3") to reference cells in `tool_review_document_post`.
91+
92+
🧠 Review & Editing of Office Documents (.docx / .xlsx / .pptx)
93+
🪶 General Rule
94+
Always retrieve the complete document content before any action using:
95+
tool_full_context_document_post(file_id)
96+
This context provides an indexed list of elements (paragraphs, cells, or slides).
97+
💬 Review (adding comments)
98+
If the user requests a proofreading, correction, or suggestion:
99+
- Call tool_full_context_document_post to obtain the indexes.
100+
- Prepare a list of tuples (index, comment).
101+
• DOCX/PPTX → index = integer
102+
• XLSX → index = cell reference ("B3", etc.)
103+
- Call tool_review_document_post(comments=[(index, comment)]).
104+
➡️ Never modify the content here, only add comments.
105+
✏️ Editing (modifying content)
106+
If the user requests a modification, rephrasing, or update of the content:
107+
- Call `tool_full_context_document_post` to get the full document context (slide indexes, shapes, text ranges).
108+
- Build a list of editing operations in a format strictly compatible with `tool_edit_document`:
109+
- Each change must be a tuple: `["sid:<slide_id>/shid:<shape_id>", text_or_list]`
110+
(e.g., `["sid:256/shid:4", ["Call 0123456789", "If patient Dr X → press 1"]]`)
111+
- For a new slide: `["nK:slot:title|body", text_or_list]`
112+
(e.g., `["n1:slot:body", ["Line 1", "Line 2"]]`)
113+
- Insertion/removal operations must be defined in `ops`:
114+
`["insert_after", <anchor_slide_id>, "nK"]` or `["insert_before", <anchor_slide_id>, "nK"]`
115+
- Create the `edits` dictionary with keys `edits` (list of tuples) and `ops` (list of operations).
116+
- Call `tool_edit_document_post` with the `edits` parameter structured as follows:
117+
```json
118+
{
119+
edits{
120+
"edits": [
121+
["sid:256/shid:4", ["Call 0123456789", "If patient Dr X → press 1"]],
122+
["n1:slot:body", ["Line 1", "Line 2"]]
123+
],
124+
"ops": [
125+
["insert_after", 256, "n1"]
126+
]
127+
}
128+
}
129+
```
130+
➡️ Replace only the targeted text without adding external content or modifying the overall document structure.
131+
🧭 Intent Interpretation
132+
If the user requests to apply, correct, modify, or update a document without specifying a tool, interpret this as an instruction to use tool_edit_document_post.
133+
➡️ Never display the modified content in the response, only call the tool.
134+
⚙️ Expected Behavior
135+
- If the document content is not yet known → always start with tool_full_context_document_post.
136+
- Never combine review and edit in the same action.
137+
- Do not invent or add external information to the document.
138+
⚙️ Mandatory Execution Rule
139+
When a document review or edit is requested:
140+
- Never display the modified document in the response.
141+
- You MUST call the corresponding tool (tool_review_document_post or tool_edit_document_post).
142+
- If the document is not yet loaded or indexes are unknown, call tool_full_context_document_post first.
143+
- The final output must be exclusively the tool result (document uploaded), never a textual rewrite.
98144
```
99145
Obviously, adapt the prompt to your needs and the context of your application.
100146

Documentation/img/image-1.png

67.4 KB
Loading

Documentation/img/image-2.png

67.1 KB
Loading

Documentation/img/image-3.png

67.4 KB
Loading

Documentation/img/image-4.png

60.2 KB
Loading

0 commit comments

Comments
 (0)