From 0f528254747546fabc80371be057f131ed207335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Mon, 22 Dec 2025 00:31:08 +0800 Subject: [PATCH] feat(model): add Cloner to Protocol --- model/api.go | 5 +++++ model/genai.go | 9 +++++++++ model/ollama.go | 8 ++++++++ model/openai.go | 8 ++++++++ 4 files changed, 30 insertions(+) diff --git a/model/api.go b/model/api.go index fa35faa..44834a2 100644 --- a/model/api.go +++ b/model/api.go @@ -21,6 +21,10 @@ type Requester interface { Header(key string, h http.Header) // Header decorator } +type Cloner interface { + Clone() Cloner +} + type MessageBuilder[T any] interface { System(prompt string) T User(prompt ...Content) T @@ -32,4 +36,5 @@ type Protocol interface { Outputer Requester MessageBuilder[Protocol] + Cloner } diff --git a/model/genai.go b/model/genai.go index 1c5c718..4984fa3 100644 --- a/model/genai.go +++ b/model/genai.go @@ -188,3 +188,12 @@ func (opai *GenAI) Assistant(prompt ...Content) Protocol { }) return opai } + +func (opai *GenAI) Clone() Cloner { + x := new(GenAI) + *x = *opai + x.SystemInstruction = nil + x.Contents = nil + x.Candidates = nil + return x +} diff --git a/model/ollama.go b/model/ollama.go index afd25fa..0a4ba25 100644 --- a/model/ollama.go +++ b/model/ollama.go @@ -101,3 +101,11 @@ func (ollm *OLLaMA) Assistant(prompt ...Content) Protocol { }) return ollm } + +func (ollm *OLLaMA) Clone() Cloner { + x := new(OLLaMA) + *x = *ollm + x.Messages = nil + x.Message = nil + return x +} diff --git a/model/openai.go b/model/openai.go index 121d9ae..d044902 100644 --- a/model/openai.go +++ b/model/openai.go @@ -155,3 +155,11 @@ func (opai *OpenAI) User(prompt ...Content) Protocol { func (opai *OpenAI) Assistant(prompt ...Content) Protocol { return opai.normal("assistant", prompt...) } + +func (opai *OpenAI) Clone() Cloner { + x := new(OpenAI) + *x = *opai + x.Choices = nil + x.Messages = nil + return x +}