From 49ba5efc7b3314811932b48858b98313e14abe98 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Wed, 3 Apr 2024 17:00:22 -0700 Subject: [PATCH 1/2] fix: reading tool from stdin using 'gptscript -' --- pkg/cli/gptscript.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkg/cli/gptscript.go b/pkg/cli/gptscript.go index 6c41b957..fef354f2 100644 --- a/pkg/cli/gptscript.go +++ b/pkg/cli/gptscript.go @@ -176,10 +176,7 @@ func (r *GPTScript) readProgram(ctx context.Context, args []string) (prg types.P if err != nil { return prg, err } - prg, err = loader.ProgramFromSource(ctx, string(data), r.SubTool) - if err != nil { - return prg, err - } + return loader.ProgramFromSource(ctx, string(data), r.SubTool) } return loader.Program(ctx, args[0], r.SubTool) From 6712734190d95b966bae0824ad988aa16428db39 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Wed, 3 Apr 2024 17:22:33 -0700 Subject: [PATCH 2/2] feat: add GPTSCRIPT_INTERNAL_OPENAI_STREAMING=false to disable streaming This is an internal feature right now to disable OpenAI streaming on chat completions. --- pkg/openai/client.go | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/pkg/openai/client.go b/pkg/openai/client.go index 02cf44d6..494d4520 100644 --- a/pkg/openai/client.go +++ b/pkg/openai/client.go @@ -214,9 +214,8 @@ func (c *Client) fromCache(ctx context.Context, messageRequest types.CompletionR func toToolCall(call types.CompletionToolCall) openai.ToolCall { return openai.ToolCall{ - Index: call.Index, - ID: call.ID, - Type: openai.ToolTypeFunction, + ID: call.ID, + Type: openai.ToolTypeFunction, Function: openai.FunctionCall{ Name: call.Function.Name, Arguments: call.Function.Arguments, @@ -471,7 +470,7 @@ func (c *Client) store(ctx context.Context, key string, responses []openai.ChatC func (c *Client) call(ctx context.Context, request openai.ChatCompletionRequest, transactionID string, partial chan<- types.CompletionStatus) (responses []openai.ChatCompletionStreamResponse, _ error) { cacheKey := c.cacheKey(request) - request.Stream = true + request.Stream = os.Getenv("GPTSCRIPT_INTERNAL_OPENAI_STREAMING") != "false" partial <- types.CompletionStatus{ CompletionID: transactionID, @@ -482,6 +481,34 @@ func (c *Client) call(ctx context.Context, request openai.ChatCompletionRequest, } slog.Debug("calling openai", "message", request.Messages) + + if !request.Stream { + resp, err := c.c.CreateChatCompletion(ctx, request) + if err != nil { + return nil, err + } + return []openai.ChatCompletionStreamResponse{ + { + ID: resp.ID, + Object: resp.Object, + Created: resp.Created, + Model: resp.Model, + Choices: []openai.ChatCompletionStreamChoice{ + { + Index: resp.Choices[0].Index, + Delta: openai.ChatCompletionStreamChoiceDelta{ + Content: resp.Choices[0].Message.Content, + Role: resp.Choices[0].Message.Role, + FunctionCall: resp.Choices[0].Message.FunctionCall, + ToolCalls: resp.Choices[0].Message.ToolCalls, + }, + FinishReason: resp.Choices[0].FinishReason, + }, + }, + }, + }, nil + } + stream, err := c.c.CreateChatCompletionStream(ctx, request) if err != nil { return nil, err