Spaces:
Configuration error
Configuration error
| package e2e_test | |
| import ( | |
| "context" | |
| "fmt" | |
| "os" | |
| "os/exec" | |
| . "github.com/onsi/ginkgo/v2" | |
| . "github.com/onsi/gomega" | |
| openaigo "github.com/otiai10/openaigo" | |
| "github.com/sashabaranov/go-openai" | |
| ) | |
| var _ = Describe("E2E test", func() { | |
| var client *openai.Client | |
| var client2 *openaigo.Client | |
| Context("API with ephemeral models", func() { | |
| BeforeEach(func() { | |
| defaultConfig := openai.DefaultConfig("") | |
| defaultConfig.BaseURL = localAIURL | |
| client2 = openaigo.NewClient("") | |
| client2.BaseURL = defaultConfig.BaseURL | |
| // Wait for API to be ready | |
| client = openai.NewClientWithConfig(defaultConfig) | |
| Eventually(func() error { | |
| _, err := client.ListModels(context.TODO()) | |
| return err | |
| }, "2m").ShouldNot(HaveOccurred()) | |
| }) | |
| // Check that the GPU was used | |
| AfterEach(func() { | |
| cmd := exec.Command("/bin/bash", "-xce", "docker logs $(docker ps -q --filter ancestor=localai-tests)") | |
| out, err := cmd.CombinedOutput() | |
| Expect(err).ToNot(HaveOccurred(), string(out)) | |
| // Execute docker logs $$(docker ps -q --filter ancestor=localai-tests) as a command and check the output | |
| if os.Getenv("BUILD_TYPE") == "cublas" { | |
| Expect(string(out)).To(ContainSubstring("found 1 CUDA devices"), string(out)) | |
| Expect(string(out)).To(ContainSubstring("using CUDA for GPU acceleration"), string(out)) | |
| } else { | |
| fmt.Println("Skipping GPU check") | |
| Expect(string(out)).To(ContainSubstring("[llama-cpp] Loads OK"), string(out)) | |
| Expect(string(out)).To(ContainSubstring("llama_model_loader"), string(out)) | |
| } | |
| }) | |
| Context("Generates text", func() { | |
| It("streams chat tokens", func() { | |
| model := "gpt-4" | |
| resp, err := client.CreateChatCompletion(context.TODO(), | |
| openai.ChatCompletionRequest{ | |
| Model: model, Messages: []openai.ChatCompletionMessage{ | |
| { | |
| Role: "user", | |
| Content: "How much is 2+2?", | |
| }, | |
| }}) | |
| Expect(err).ToNot(HaveOccurred()) | |
| Expect(len(resp.Choices)).To(Equal(1), fmt.Sprint(resp)) | |
| Expect(resp.Choices[0].Message.Content).To(Or(ContainSubstring("4"), ContainSubstring("four")), fmt.Sprint(resp.Choices[0].Message.Content)) | |
| }) | |
| }) | |
| }) | |
| }) | |