iop/apps/node/internal/adapters/ollama/ollama.go
toki 2d6fde0876 기능: IOP 모노레포 스캐폴드 초기 구현
apps/node 중심 구현 — TCP+JSON transport, Hexagonal Architecture,
mock/cli adapter, fx DI, SQLite 실행 이력 저장.
edge/control-plane/worker는 cobra placeholder.
유닛 테스트 및 통합 테스트 클라이언트 계획서 추가.
2026-05-02 13:20:35 +09:00

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,
Models: []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("model", spec.Model),
zap.String("base_url", o.baseURL),
)
return fmt.Errorf("ollama adapter: not yet implemented")
}