micro--go-micro
a356ab36a8
* ai/minimax: complete provider surface (matrix, conformance, changelog) Follow-up after merging the MiniMax provider (#3769), mirroring the Ollama completeness pass (#3637): - Add the `minimax` row to the AI provider capability matrix and blank-import ai/minimax in provider_capabilities_test.go so the matrix stays enforced against the registry. - Add minimax to the stream-conformance allowlist (+ import) so its streaming is actually exercised against the OpenAI-compatible SSE contract, not just registered. It passes via the shared ai/internal/openaiapi path. - Record the provider in CHANGELOG [Unreleased]. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL * ai: update capabilities_test provider assertions for minimax Adding the minimax blank-import to the shared ai_test binary (for stream conformance) also registers it for TestRegisteredProviders / TestCapabilityRows / TestCapabilityMatrix in capabilities_test.go, which pin the exact provider set. Update those assertions to include minimax. (Fixes the Unit Tests failure my scoped `-run TestStreamProviders` check missed — go compiles all _test.go in a package into one binary.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL --------- Co-authored-by: Claude <noreply@anthropic.com>
50 行
1.1 KiB
Go
50 行
1.1 KiB
Go
package guides_test
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
"testing"
|
|
|
|
"go-micro.dev/v6/ai"
|
|
_ "go-micro.dev/v6/ai/anthropic"
|
|
_ "go-micro.dev/v6/ai/atlascloud"
|
|
_ "go-micro.dev/v6/ai/gemini"
|
|
_ "go-micro.dev/v6/ai/groq"
|
|
_ "go-micro.dev/v6/ai/minimax"
|
|
_ "go-micro.dev/v6/ai/mistral"
|
|
_ "go-micro.dev/v6/ai/ollama"
|
|
_ "go-micro.dev/v6/ai/openai"
|
|
_ "go-micro.dev/v6/ai/together"
|
|
)
|
|
|
|
func TestAIProviderGuideCapabilityMatrixMatchesRegistry(t *testing.T) {
|
|
_, filename, _, ok := runtime.Caller(0)
|
|
if !ok {
|
|
t.Fatal("runtime.Caller failed")
|
|
}
|
|
|
|
guidePath := filepath.Join(filepath.Dir(filename), "ai-provider-guide.md")
|
|
b, err := os.ReadFile(guidePath)
|
|
if err != nil {
|
|
t.Fatalf("read AI provider guide: %v", err)
|
|
}
|
|
guide := string(b)
|
|
|
|
for _, row := range ai.CapabilityRows() {
|
|
want := fmt.Sprintf("| `%s` | %s | %s | %s | %s |", row.Provider, yesNo(row.Model), yesNo(row.Image), yesNo(row.Video), yesNo(row.Stream))
|
|
if !strings.Contains(guide, want) {
|
|
t.Fatalf("AI provider guide capability matrix is stale; missing row %q", want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func yesNo(ok bool) string {
|
|
if ok {
|
|
return "Yes"
|
|
}
|
|
return "No"
|
|
}
|