micro--go-micro
669481224c
* feat(cli): add CRUD, pub/sub, and API gateway templates for micro new
Add --template flag to 'micro new' with three preset templates:
- crud: CRUD service with Create/Read/Update/Delete/List, in-memory
store with sync.RWMutex, UUID generation, pagination, and doc
comments with @example tags for MCP tool discovery.
- pubsub: Event-driven service with Publish/Stats RPCs and a
Subscribe method that hooks into the broker. Includes event
types with ID, type, source, data, and timestamp.
- api: API gateway service with Health and Endpoint RPCs, an
internal HTTP route table, and a response recorder for
proxying requests through RPC.
All templates include MCP-ready doc comments and work with
--no-mcp. The default template (no flag) is unchanged.
Usage:
micro new myservice --template crud
micro new myservice --template pubsub
micro new myservice --template api
* fix(ai): update Atlas Cloud provider to use actual API formats
Fix the Atlas Cloud image generation to use their real async API:
POST /api/v1/model/generateImage → poll /api/v1/model/prediction/{id}
instead of the OpenAI-compatible endpoint which doesn't exist.
Add Quality and OutputFormat fields to ai.ImageRequest for
provider-specific image parameters.
Update default text model from llama-3.3-70b (doesn't exist) to
deepseek-ai/DeepSeek-V3-0324 (their flagship model). Update
default image model to openai/gpt-image-2/text-to-image.
* feat(website): add AI-generated images to landing page, docs, and blog
Generate 5 images via Atlas Cloud's image API (gpt-image-2) to
elevate the website experience:
- hero.png: microservices network graph for landing page
- architecture.png: registry + broker architecture diagram
- mcp-agent.png: AI agent calling services via MCP
- developer-experience.png: terminal showing micro run/chat
- blog-atlas.png: Atlas Cloud unified API illustration
Add visual sections to the landing page with architecture,
MCP integration, and developer experience showcases. Add
images to docs index, MCP docs, and Atlas Cloud blog post.
All images resized to 1200px wide and optimized for web.
Generated using Atlas Cloud sponsor credits.
* feat(website): redesign landing page and add images to docs
Redesign the landing page from a centered card layout to a
full-width modern site with:
- Top navigation bar
- Hero section with gradient background and CTA buttons
- Full-width image showcase sections
- Two-column layout for architecture, MCP, and DX sections
- Feature grid with 6 capabilities
- Footer with links
- Responsive breakpoints for mobile
Generate 3 more images via Atlas Cloud for docs:
- getting-started.png for the getting started guide
- deployment.png for the deployment guide
- data-model.png for the data model docs
Add images to getting-started.md, model.md, and deployment.md.
---------
Co-authored-by: Claude <noreply@anthropic.com>
66 行
2.0 KiB
Go
66 行
2.0 KiB
Go
package ai
|
|
|
|
import "context"
|
|
|
|
// ImageModel provides an interface for image generation providers.
|
|
// Providers that support image generation implement this alongside
|
|
// or instead of Model. Use NewImage to construct, or type-assert
|
|
// a provider that implements both:
|
|
//
|
|
// p := atlascloud.NewProvider(ai.WithAPIKey(key))
|
|
// if ig, ok := p.(ai.ImageModel); ok {
|
|
// resp, _ := ig.GenerateImage(ctx, req)
|
|
// }
|
|
type ImageModel interface {
|
|
GenerateImage(ctx context.Context, req *ImageRequest, opts ...GenerateOption) (*ImageResponse, error)
|
|
String() string
|
|
}
|
|
|
|
// ImageRequest describes what image to generate.
|
|
type ImageRequest struct {
|
|
// Prompt is the text description of the image to generate.
|
|
Prompt string
|
|
// Model overrides the provider's default image model.
|
|
Model string
|
|
// Size of the generated image (e.g. "1024x1024"). Provider-specific.
|
|
Size string
|
|
// N is the number of images to generate. Defaults to 1.
|
|
N int
|
|
// Quality controls generation quality. Provider-specific (e.g. "low", "medium", "high").
|
|
Quality string
|
|
// OutputFormat sets the image format (e.g. "png", "jpeg"). Provider-specific.
|
|
OutputFormat string
|
|
}
|
|
|
|
// ImageResponse holds the generated images.
|
|
type ImageResponse struct {
|
|
Images []Image
|
|
}
|
|
|
|
// Image is a single generated image, returned as a URL, base64 data, or both
|
|
// depending on the provider and request options.
|
|
type Image struct {
|
|
// URL is a remote URL where the image can be fetched.
|
|
URL string
|
|
// Base64 is the base64-encoded image data.
|
|
Base64 string
|
|
}
|
|
|
|
// NewImageFunc creates a new ImageModel instance.
|
|
type NewImageFunc func(...Option) ImageModel
|
|
|
|
var imageProviders = make(map[string]NewImageFunc)
|
|
|
|
// RegisterImage registers an image generation provider.
|
|
func RegisterImage(name string, fn NewImageFunc) {
|
|
imageProviders[name] = fn
|
|
}
|
|
|
|
// NewImage creates a new ImageModel instance based on the provider name.
|
|
func NewImage(provider string, opts ...Option) ImageModel {
|
|
if fn, ok := imageProviders[provider]; ok {
|
|
return fn(opts...)
|
|
}
|
|
return nil
|
|
}
|