Commit Graph

13 Commits

Author SHA1 Message Date
Copilot
34bc1bda1e fix(api): SSE streaming format to comply with specification (#7182)
* Initial plan

* Fix SSE streaming format to comply with specification

- Replace json.Encoder with json.Marshal for explicit formatting
- Use explicit \n\n for all SSE messages (instead of relying on implicit newlines)
- Change %v to %s format specifier for proper string formatting
- Fix error message streaming to include proper SSE format
- Ensure consistency between chat.go and completion.go endpoints

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Add proper error handling for JSON marshal failures in streaming

- Handle json.Marshal errors explicitly in error response paths
- Add fallback simple error message if marshal fails
- Prevents sending 'data: <nil>' on marshal failures
- Addresses code review feedback

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Fix SSE streaming format to comply with specification

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Fix finish_reason field to use pointer for proper null handling

- Change FinishReason from string to *string in Choice schema
- Streaming chunks now omit finish_reason (null) instead of empty string
- Final chunks properly set finish_reason to "stop", "tool_calls", etc.
- Remove empty content from initial streaming chunks (only send role)
- Final streaming chunk sends empty delta with finish_reason
- Addresses OpenAI API compliance issues causing client failures

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Improve code consistency for string pointer creation

- Use consistent pattern: declare variable then take address
- Remove inline anonymous function for better readability
- Addresses code review feedback

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Move common finish reasons to constants

- Create constants.go with FinishReasonStop, FinishReasonToolCalls, FinishReasonFunctionCall
- Replace all string literals with constants in chat.go, completion.go, realtime.go
- Improves code maintainability and prevents typos

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Make it build

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Fix finish_reason to always be present with null or string value

- Remove omitempty from FinishReason field in Choice struct
- Explicitly set FinishReason to nil for all streaming chunks
- Ensures finish_reason appears as null in JSON for streaming chunks
- Final chunks still properly set finish_reason to "stop", "tool_calls", etc.
- Complies with OpenAI API specification example

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2025-11-09 22:00:27 +01:00
Ettore Di Giacinto
05aba5a311 chore(gallery agent): add execution summary in the PR message
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-18 18:17:42 +02:00
Ettore Di Giacinto
71a84b91e3 chore(ci): fix gallery agent linting issues
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-16 16:05:17 +02:00
Ettore Di Giacinto
209d40be71 Revert "chore(gallery agent): try fixing linting errors"
This reverts commit b0eb1ab2a1.
2025-10-16 10:32:21 +02:00
Ettore Di Giacinto
bfd76805e8 Revert "chore(gallery agent): try fixing linting errors"
This reverts commit 561aa5e443.
2025-10-16 10:30:27 +02:00
Ettore Di Giacinto
561aa5e443 chore(gallery agent): try fixing linting errors
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-16 10:05:37 +02:00
Ettore Di Giacinto
b0eb1ab2a1 chore(gallery agent): try fixing linting errors
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-16 09:44:04 +02:00
Ettore Di Giacinto
1208fb6fa1 chore(gallery agent): support non-gguf
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-16 09:35:42 +02:00
Ettore Di Giacinto
f98fe85c42 chore(gallery agent): try to fix linting
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-16 09:14:28 +02:00
Ettore Di Giacinto
244e47e1e0 chore(gallery agent): filter out existing
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-15 23:26:47 +02:00
Ettore Di Giacinto
c6b989be13 chore(gallery agent): clean content
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-15 23:20:44 +02:00
Ettore Di Giacinto
df9b2abf84 chore(gallery agent): Use real readme for selection
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-15 23:11:49 +02:00
Ettore Di Giacinto
582114bda9 feat(ci): add gallery updater agent (#6467)
* WIP

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Add CI workflow

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-15 23:00:14 +02:00