No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

62 líneas
1.5KB

  1. package llmruntime
  2. import (
  3. "context"
  4. "encoding/json"
  5. "net/http"
  6. "net/http/httptest"
  7. "strings"
  8. "testing"
  9. "time"
  10. )
  11. func TestOpenAICompatibleClient_ForwardsTemperatureAndMaxTokens(t *testing.T) {
  12. t.Parallel()
  13. var got struct {
  14. Temperature float64 `json:"temperature"`
  15. MaxTokens int `json:"max_tokens"`
  16. }
  17. server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  18. _ = json.NewDecoder(r.Body).Decode(&got)
  19. _, _ = w.Write([]byte(`{"choices":[{"message":{"content":"ok"}}]}`))
  20. }))
  21. defer server.Close()
  22. factory := NewFactory(2 * time.Second)
  23. client, err := factory.ClientFor("openai")
  24. if err != nil {
  25. t.Fatalf("client creation failed: %v", err)
  26. }
  27. temperature := 0.77
  28. maxTokens := 777
  29. _, err = client.Generate(context.Background(), Request{
  30. Provider: "openai",
  31. BaseURL: server.URL,
  32. Model: "gpt-5.4",
  33. APIKey: "key",
  34. Temperature: &temperature,
  35. MaxTokens: &maxTokens,
  36. SystemPrompt: "system",
  37. UserPrompt: "user",
  38. })
  39. if err != nil {
  40. t.Fatalf("generate failed: %v", err)
  41. }
  42. if got.Temperature != 0.77 {
  43. t.Fatalf("unexpected temperature: %v", got.Temperature)
  44. }
  45. if got.MaxTokens != 777 {
  46. t.Fatalf("unexpected max tokens: %v", got.MaxTokens)
  47. }
  48. }
  49. func TestExtractProviderErrorMessage(t *testing.T) {
  50. t.Parallel()
  51. msg := extractProviderErrorMessage([]byte(`{"error":{"message":"invalid key"}}`))
  52. if !strings.Contains(msg, "invalid key") {
  53. t.Fatalf("unexpected message: %q", msg)
  54. }
  55. }