- edge node store 및 console 업데이트 - node adapters(cli, ollama, vllm, mock) 리팩토링 - node router, run_manager, store 개선 - proto 파일(control.proto, runtime.proto) 및 생성 코드 업데이트 - config 업데이트
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
// Package ollama provides an Adapter that calls a local Ollama server.
|
|
package ollama
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"iop/apps/node/internal/runtime"
|
|
"iop/packages/config"
|
|
)
|
|
|
|
const Name = "ollama"
|
|
|
|
type Ollama struct {
|
|
baseURL string
|
|
logger *zap.Logger
|
|
}
|
|
|
|
func New(cfg config.OllamaConf, logger *zap.Logger) *Ollama {
|
|
return &Ollama{
|
|
baseURL: cfg.BaseURL,
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
func (o *Ollama) Name() string { return Name }
|
|
|
|
func (o *Ollama) Capabilities(_ context.Context) (runtime.Capabilities, error) {
|
|
// TODO: query /api/tags from Ollama to enumerate available models.
|
|
return runtime.Capabilities{
|
|
AdapterName: Name,
|
|
Targets: []string{},
|
|
MaxConcurrency: 4,
|
|
}, nil
|
|
}
|
|
|
|
func (o *Ollama) Execute(ctx context.Context, spec runtime.ExecutionSpec, sink runtime.EventSink) error {
|
|
// TODO: implement streaming call to Ollama /api/generate or /api/chat.
|
|
// Use net/http with chunked JSON response (ndjson).
|
|
o.logger.Info("ollama adapter called",
|
|
zap.String("run_id", spec.RunID),
|
|
zap.String("target", spec.Target),
|
|
zap.String("base_url", o.baseURL),
|
|
)
|
|
return fmt.Errorf("ollama adapter: not yet implemented")
|
|
}
|