diff --git a/README.md b/README.md index 2de88f5..147e237 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ service. ## Built-in workers -The first built-in worker processes `llm_chat` and `chat_completion` jobs whose -`model_profile` equals `LLM_MODEL`. +The first built-in worker processes `llm_chat`, `chat_completion` and +`call_analysis` jobs whose `model_profile` equals `LLM_MODEL`. Input can be either explicit messages: @@ -42,6 +42,10 @@ Input can be either explicit messages: or compact `system` / `user` fields. The completed job result contains `content`, `model`, `usage` and `duration_ms`. +`call_analysis` uses the same input contract as `llm_chat`; callers may include +domain metadata fields in `input`, but the worker only reads chat fields such as +`system`, `user`, `messages`, `max_tokens` and `response_format`. + ## API - `POST /api/v1/jobs` creates one job. diff --git a/internal/worker/worker.go b/internal/worker/worker.go index c58d353..037899d 100644 --- a/internal/worker/worker.go +++ b/internal/worker/worker.go @@ -15,6 +15,7 @@ import ( const ( TaskLLMChat = "llm_chat" TaskChatCompletion = "chat_completion" + TaskCallAnalysis = "call_analysis" ) type Worker struct { @@ -72,7 +73,7 @@ func (w *Worker) tick(ctx context.Context) { } jobs, err := w.store.ClaimJobs(ctx, model.ClaimJobs{ WorkerID: w.workerID, - TaskTypes: []string{TaskLLMChat, TaskChatCompletion}, + TaskTypes: []string{TaskLLMChat, TaskChatCompletion, TaskCallAnalysis}, ModelProfiles: []string{w.modelProfile}, Limit: w.claimLimit, })