mirror of
https://github.com/likelovewant/ollama-for-amd.git
synced 2025-12-22 14:53:56 +00:00
add registries for parsers/renderers
This commit is contained in:
@@ -1,12 +1,46 @@
|
||||
package renderers
|
||||
|
||||
import "github.com/ollama/ollama/api"
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/ollama/ollama/api"
|
||||
)
|
||||
|
||||
type Renderer interface {
|
||||
Render(messages []api.Message, tools []api.Tool, think *api.ThinkValue) (string, error)
|
||||
}
|
||||
|
||||
func RendererForName(name string) Renderer {
|
||||
type (
|
||||
RendererConstructor func() Renderer
|
||||
RendererRegistry struct {
|
||||
renderers map[string]RendererConstructor
|
||||
}
|
||||
)
|
||||
|
||||
func (r *RendererRegistry) Register(name string, renderer RendererConstructor) {
|
||||
r.renderers[name] = renderer
|
||||
}
|
||||
|
||||
var registry = RendererRegistry{
|
||||
renderers: make(map[string]RendererConstructor),
|
||||
}
|
||||
|
||||
func Register(name string, renderer RendererConstructor) {
|
||||
registry.Register(name, renderer)
|
||||
}
|
||||
|
||||
func RenderWithRenderer(name string, msgs []api.Message, tools []api.Tool, think *api.ThinkValue) (string, error) {
|
||||
renderer := rendererForName(name)
|
||||
if renderer == nil {
|
||||
return "", fmt.Errorf("unknown renderer %q", name)
|
||||
}
|
||||
return renderer.Render(msgs, tools, think)
|
||||
}
|
||||
|
||||
func rendererForName(name string) Renderer {
|
||||
if constructor, ok := registry.renderers[name]; ok {
|
||||
return constructor()
|
||||
}
|
||||
switch name {
|
||||
case "qwen3-coder":
|
||||
renderer := &Qwen3CoderRenderer{}
|
||||
|
||||
Reference in New Issue
Block a user