-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into embedding_example
- Loading branch information
Showing
38 changed files
with
1,468 additions
and
487 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
# These are supported funding model platforms | ||
|
||
github: [sashabaranov] | ||
github: [sashabaranov, vvatanabe] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
--- | ||
name: Bug report | ||
about: Create a report to help us improve | ||
title: '' | ||
labels: bug | ||
assignees: '' | ||
|
||
--- | ||
|
||
Your issue may already be reported! | ||
Please search on the [issue tracker](https://github.com/sashabaranov/go-openai/issues) before creating one. | ||
|
||
**Describe the bug** | ||
A clear and concise description of what the bug is. If it's an API-related bug, please provide relevant endpoint(s). | ||
|
||
**To Reproduce** | ||
Steps to reproduce the behavior, including any relevant code snippets. | ||
|
||
**Expected behavior** | ||
A clear and concise description of what you expected to happen. | ||
|
||
**Screenshots/Logs** | ||
If applicable, add screenshots to help explain your problem. For non-graphical issues, please provide any relevant logs or stack traces. | ||
|
||
**Environment (please complete the following information):** | ||
- go-openai version: [e.g. v1.12.0] | ||
- Go version: [e.g. 1.18] | ||
- OpenAI API version: [e.g. v1] | ||
- OS: [e.g. Ubuntu 20.04] | ||
|
||
**Additional context** | ||
Add any other context about the problem here. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--- | ||
name: Feature request | ||
about: Suggest an idea for this project | ||
title: '' | ||
labels: enhancement | ||
assignees: '' | ||
|
||
--- | ||
|
||
Your issue may already be reported! | ||
Please search on the [issue tracker](https://github.com/sashabaranov/go-openai/issues) before creating one. | ||
|
||
**Is your feature request related to a problem? Please describe.** | ||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] | ||
|
||
**Describe the solution you'd like** | ||
A clear and concise description of what you want to happen. | ||
|
||
**Describe alternatives you've considered** | ||
A clear and concise description of any alternative solutions or features you've considered. | ||
|
||
**Additional context** | ||
Add any other context or screenshots about the feature request here. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
A similar PR may already be submitted! | ||
Please search among the [Pull request](https://github.com/sashabaranov/go-openai/pulls) before creating one. | ||
|
||
If your changes introduce breaking changes, please prefix the title of your pull request with "[BREAKING_CHANGES]". This allows for clear identification of such changes in the 'What's Changed' section on the release page, making it developer-friendly. | ||
|
||
Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. | ||
|
||
**Describe the change** | ||
Please provide a clear and concise description of the changes you're proposing. Explain what problem it solves or what feature it adds. | ||
|
||
**Describe your solution** | ||
Describe how your changes address the problem or how they add the feature. This should include a brief description of your approach and any new libraries or dependencies you're using. | ||
|
||
**Tests** | ||
Briefly describe how you have tested these changes. | ||
|
||
**Additional context** | ||
Add any other context or screenshots or logs about your pull request here. If the pull request relates to an open issue, please link to it. | ||
|
||
Issue: #XXXX |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
//go:build integration | ||
|
||
package openai_test | ||
|
||
import ( | ||
"context" | ||
"errors" | ||
"io" | ||
"os" | ||
"testing" | ||
|
||
. "github.com/sashabaranov/go-openai" | ||
"github.com/sashabaranov/go-openai/internal/test/checks" | ||
"github.com/sashabaranov/go-openai/jsonschema" | ||
) | ||
|
||
func TestAPI(t *testing.T) { | ||
apiToken := os.Getenv("OPENAI_TOKEN") | ||
if apiToken == "" { | ||
t.Skip("Skipping testing against production OpenAI API. Set OPENAI_TOKEN environment variable to enable it.") | ||
} | ||
|
||
var err error | ||
c := NewClient(apiToken) | ||
ctx := context.Background() | ||
_, err = c.ListEngines(ctx) | ||
checks.NoError(t, err, "ListEngines error") | ||
|
||
_, err = c.GetEngine(ctx, "davinci") | ||
checks.NoError(t, err, "GetEngine error") | ||
|
||
fileRes, err := c.ListFiles(ctx) | ||
checks.NoError(t, err, "ListFiles error") | ||
|
||
if len(fileRes.Files) > 0 { | ||
_, err = c.GetFile(ctx, fileRes.Files[0].ID) | ||
checks.NoError(t, err, "GetFile error") | ||
} // else skip | ||
|
||
embeddingReq := EmbeddingRequest{ | ||
Input: []string{ | ||
"The food was delicious and the waiter", | ||
"Other examples of embedding request", | ||
}, | ||
Model: AdaSearchQuery, | ||
} | ||
_, err = c.CreateEmbeddings(ctx, embeddingReq) | ||
checks.NoError(t, err, "Embedding error") | ||
|
||
_, err = c.CreateChatCompletion( | ||
ctx, | ||
ChatCompletionRequest{ | ||
Model: GPT3Dot5Turbo, | ||
Messages: []ChatCompletionMessage{ | ||
{ | ||
Role: ChatMessageRoleUser, | ||
Content: "Hello!", | ||
}, | ||
}, | ||
}, | ||
) | ||
|
||
checks.NoError(t, err, "CreateChatCompletion (without name) returned error") | ||
|
||
_, err = c.CreateChatCompletion( | ||
ctx, | ||
ChatCompletionRequest{ | ||
Model: GPT3Dot5Turbo, | ||
Messages: []ChatCompletionMessage{ | ||
{ | ||
Role: ChatMessageRoleUser, | ||
Name: "John_Doe", | ||
Content: "Hello!", | ||
}, | ||
}, | ||
}, | ||
) | ||
checks.NoError(t, err, "CreateChatCompletion (with name) returned error") | ||
|
||
stream, err := c.CreateCompletionStream(ctx, CompletionRequest{ | ||
Prompt: "Ex falso quodlibet", | ||
Model: GPT3Ada, | ||
MaxTokens: 5, | ||
Stream: true, | ||
}) | ||
checks.NoError(t, err, "CreateCompletionStream returned error") | ||
defer stream.Close() | ||
|
||
counter := 0 | ||
for { | ||
_, err = stream.Recv() | ||
if err != nil { | ||
if errors.Is(err, io.EOF) { | ||
break | ||
} | ||
t.Errorf("Stream error: %v", err) | ||
} else { | ||
counter++ | ||
} | ||
} | ||
if counter == 0 { | ||
t.Error("Stream did not return any responses") | ||
} | ||
|
||
_, err = c.CreateChatCompletion( | ||
context.Background(), | ||
ChatCompletionRequest{ | ||
Model: GPT3Dot5Turbo, | ||
Messages: []ChatCompletionMessage{ | ||
{ | ||
Role: ChatMessageRoleUser, | ||
Content: "What is the weather like in Boston?", | ||
}, | ||
}, | ||
Functions: []FunctionDefinition{{ | ||
Name: "get_current_weather", | ||
Parameters: jsonschema.Definition{ | ||
Type: jsonschema.Object, | ||
Properties: map[string]jsonschema.Definition{ | ||
"location": { | ||
Type: jsonschema.String, | ||
Description: "The city and state, e.g. San Francisco, CA", | ||
}, | ||
"unit": { | ||
Type: jsonschema.String, | ||
Enum: []string{"celsius", "fahrenheit"}, | ||
}, | ||
}, | ||
Required: []string{"location"}, | ||
}, | ||
}}, | ||
}, | ||
) | ||
checks.NoError(t, err, "CreateChatCompletion (with functions) returned error") | ||
} | ||
|
||
func TestAPIError(t *testing.T) { | ||
apiToken := os.Getenv("OPENAI_TOKEN") | ||
if apiToken == "" { | ||
t.Skip("Skipping testing against production OpenAI API. Set OPENAI_TOKEN environment variable to enable it.") | ||
} | ||
|
||
var err error | ||
c := NewClient(apiToken + "_invalid") | ||
ctx := context.Background() | ||
_, err = c.ListEngines(ctx) | ||
checks.HasError(t, err, "ListEngines should fail with an invalid key") | ||
|
||
var apiErr *APIError | ||
if !errors.As(err, &apiErr) { | ||
t.Fatalf("Error is not an APIError: %+v", err) | ||
} | ||
|
||
if apiErr.HTTPStatusCode != 401 { | ||
t.Fatalf("Unexpected API error status code: %d", apiErr.HTTPStatusCode) | ||
} | ||
|
||
switch v := apiErr.Code.(type) { | ||
case string: | ||
if v != "invalid_api_key" { | ||
t.Fatalf("Unexpected API error code: %s", v) | ||
} | ||
default: | ||
t.Fatalf("Unexpected API error code type: %T", v) | ||
} | ||
|
||
if apiErr.Error() == "" { | ||
t.Fatal("Empty error message occurred") | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.