From 3f60fd57e3a71c82c531edb4a6fe1699146ad103 Mon Sep 17 00:00:00 2001 From: ParthSareen Date: Thu, 19 Dec 2024 14:47:51 -0800 Subject: [PATCH] Remove /template API --- api/client.go | 8 -------- api/types.go | 10 ---------- server/prompt.go | 15 --------------- server/routes.go | 33 --------------------------------- 4 files changed, 66 deletions(-) diff --git a/api/client.go b/api/client.go index 65d136e83..4688d4d13 100644 --- a/api/client.go +++ b/api/client.go @@ -360,14 +360,6 @@ func (c *Client) Embeddings(ctx context.Context, req *EmbeddingRequest) (*Embedd return &resp, nil } -func (c *Client) Template(ctx context.Context, req *TemplateRequest) (*TemplateResponse, error) { - var resp TemplateResponse - if err := c.do(ctx, http.MethodPost, "/api/template", req, &resp); err != nil { - return nil, err - } - return &resp, nil -} - // CreateBlob creates a blob from a file on the server. digest is the // expected SHA256 digest of the file, and r represents the file. func (c *Client) CreateBlob(ctx context.Context, digest string, r io.Reader) error { diff --git a/api/types.go b/api/types.go index 35070b79f..c9a9a6041 100644 --- a/api/types.go +++ b/api/types.go @@ -315,16 +315,6 @@ type CreateRequest struct { Quantization string `json:"quantization,omitempty"` } -type TemplateRequest struct { - Model string `json:"model"` - Messages []Message `json:"messages"` - Tools []Tool `json:"tools"` -} - -type TemplateResponse struct { - TemplatedPrompt string `json:"templated_prompt"` -} - // DeleteRequest is the request passed to [Client.Delete]. type DeleteRequest struct { Model string `json:"model"` diff --git a/server/prompt.go b/server/prompt.go index 31fc418e9..062bbeb9e 100644 --- a/server/prompt.go +++ b/server/prompt.go @@ -146,21 +146,6 @@ func chatPrompt(ctx context.Context, m *Model, tokenize tokenizeFunc, opts *api. return b.String(), images, nil } -func applyTemplate(m *Model, msgs []api.Message, tools []api.Tool) (string, error) { - isMllama := checkMllamaModelFamily(m) - for _, msg := range msgs { - if isMllama && len(msg.Images) > 1 { - return "", errTooManyImages - } - } - - var b bytes.Buffer - if err := m.Template.Execute(&b, template.Values{Messages: msgs, Tools: tools}); err != nil { - return "", err - } - return b.String(), nil -} - func checkMllamaModelFamily(m *Model) bool { for _, arch := range m.Config.ModelFamilies { if arch == "mllama" { diff --git a/server/routes.go b/server/routes.go index 56ad844f0..06db0bbed 100644 --- a/server/routes.go +++ b/server/routes.go @@ -1228,7 +1228,6 @@ func (s *Server) GenerateRoutes() http.Handler { r.POST("/api/blobs/:digest", s.CreateBlobHandler) r.HEAD("/api/blobs/:digest", s.HeadBlobHandler) r.GET("/api/ps", s.PsHandler) - r.Any("/api/template", gin.WrapF(s.TemplateHandler)) // Compatibility endpoints r.POST("/v1/chat/completions", openai.ChatMiddleware(), s.ChatHandler) @@ -1452,38 +1451,6 @@ func (s *Server) PsHandler(c *gin.Context) { c.JSON(http.StatusOK, api.ProcessResponse{Models: models}) } -func (s *Server) TemplateHandler(w http.ResponseWriter, r *http.Request) { - var req api.TemplateRequest - if err := json.NewDecoder(r.Body).Decode(&req); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - model, err := GetModel(req.Model) - if err != nil { - switch { - case os.IsNotExist(err): - http.Error(w, fmt.Sprintf("model '%s' not found", req.Model), http.StatusNotFound) - case err.Error() == "invalid model name": - http.Error(w, err.Error(), http.StatusBadRequest) - default: - http.Error(w, err.Error(), http.StatusInternalServerError) - } - return - } - - prompt, err := applyTemplate(model, req.Messages, req.Tools) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - - if err := json.NewEncoder(w).Encode(api.TemplateResponse{TemplatedPrompt: prompt}); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } -} - func (s *Server) ChatHandler(c *gin.Context) { checkpointStart := time.Now()