Skip to content

Commit 08c37c1

Browse files
feat(api): manual updates
1 parent 5c656ef commit 08c37c1

File tree

8 files changed

+833
-41
lines changed

8 files changed

+833
-41
lines changed

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 97
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-c7dacca97e28bceff218684bb429481a70aa47aadad983ed9178bfda75ff4cd2.yml
3-
openapi_spec_hash: 28eb1bb901ca10d2e37db4606d2bcfa7
4-
config_hash: 167ad0ca036d0f023c78e6496b4311e8
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-670ea0d2cc44f52a87dd3cadea45632953283e0636ba30788fdbdb22a232ccac.yml
3+
openapi_spec_hash: d8b7d38911fead545adf3e4297956410
4+
config_hash: 5525bda35e48ea6387c6175c4d1651fa

api.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,12 @@ Params Types:
136136
Response Types:
137137

138138
- <a href="https://pkg.go.dev/github.com/openai/openai-go">openai</a>.<a href="https://pkg.go.dev/github.com/openai/openai-go#Image">Image</a>
139+
- <a href="https://pkg.go.dev/github.com/openai/openai-go">openai</a>.<a href="https://pkg.go.dev/github.com/openai/openai-go#ImageEditCompletedEvent">ImageEditCompletedEvent</a>
140+
- <a href="https://pkg.go.dev/github.com/openai/openai-go">openai</a>.<a href="https://pkg.go.dev/github.com/openai/openai-go#ImageEditPartialImageEvent">ImageEditPartialImageEvent</a>
141+
- <a href="https://pkg.go.dev/github.com/openai/openai-go">openai</a>.<a href="https://pkg.go.dev/github.com/openai/openai-go#ImageEditStreamEventUnion">ImageEditStreamEventUnion</a>
142+
- <a href="https://pkg.go.dev/github.com/openai/openai-go">openai</a>.<a href="https://pkg.go.dev/github.com/openai/openai-go#ImageGenCompletedEvent">ImageGenCompletedEvent</a>
143+
- <a href="https://pkg.go.dev/github.com/openai/openai-go">openai</a>.<a href="https://pkg.go.dev/github.com/openai/openai-go#ImageGenPartialImageEvent">ImageGenPartialImageEvent</a>
144+
- <a href="https://pkg.go.dev/github.com/openai/openai-go">openai</a>.<a href="https://pkg.go.dev/github.com/openai/openai-go#ImageGenStreamEventUnion">ImageGenStreamEventUnion</a>
139145
- <a href="https://pkg.go.dev/github.com/openai/openai-go">openai</a>.<a href="https://pkg.go.dev/github.com/openai/openai-go#ImagesResponse">ImagesResponse</a>
140146

141147
Methods:

examples/image-streaming/main.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"encoding/base64"
6+
"fmt"
7+
"os"
8+
"path/filepath"
9+
10+
"github.com/openai/openai-go"
11+
)
12+
13+
func main() {
14+
client := openai.NewClient()
15+
ctx := context.Background()
16+
17+
fmt.Println("Starting image streaming example...")
18+
19+
stream := client.Images.GenerateStreaming(ctx, openai.ImageGenerateParams{
20+
Model: openai.ImageModelGPTImage1,
21+
Prompt: "A cute baby sea otter",
22+
N: openai.Int(1),
23+
Size: openai.ImageGenerateParamsSize1024x1024,
24+
PartialImages: openai.Int(3),
25+
})
26+
27+
for stream.Next() {
28+
event := stream.Current()
29+
30+
switch variant := event.AsAny().(type) {
31+
case openai.ImageGenPartialImageEvent:
32+
fmt.Printf(" Partial image %d/3 received\n", variant.PartialImageIndex+1)
33+
fmt.Printf(" Size: %d characters (base64)\n", len(variant.B64JSON))
34+
35+
// Save partial image to file
36+
filename := fmt.Sprintf("partial_%d.png", variant.PartialImageIndex+1)
37+
if err := saveBase64Image(variant.B64JSON, filename); err != nil {
38+
panic(fmt.Errorf("failed to save partial image: %w", err))
39+
}
40+
absPath, _ := filepath.Abs(filename)
41+
fmt.Printf(" 💾 Saved to: %s\n", absPath)
42+
case openai.ImageGenCompletedEvent:
43+
fmt.Printf("\n✅ Final image completed!\n")
44+
fmt.Printf(" Size: %d characters (base64)\n", len(variant.B64JSON))
45+
46+
// Save final image to file
47+
filename := "final_image.png"
48+
if err := saveBase64Image(variant.B64JSON, filename); err != nil {
49+
panic(fmt.Errorf("failed to save final image: %w", err))
50+
}
51+
absPath, _ := filepath.Abs(filename)
52+
fmt.Printf(" 💾 Saved to: %s\n", absPath)
53+
54+
default:
55+
fmt.Printf("Received unknown event type: %+v\n", event)
56+
}
57+
}
58+
59+
if err := stream.Err(); err != nil {
60+
panic(fmt.Errorf("error during streaming: %w", err))
61+
}
62+
}
63+
64+
func saveBase64Image(b64Data, filename string) error {
65+
imageData, err := base64.StdEncoding.DecodeString(b64Data)
66+
if err != nil {
67+
return fmt.Errorf("failed to decode base64: %w", err)
68+
}
69+
70+
if err := os.WriteFile(filename, imageData, 0644); err != nil {
71+
return fmt.Errorf("failed to write file: %w", err)
72+
}
73+
74+
return nil
75+
}

0 commit comments

Comments
 (0)