vision-model-checker.test.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { jest } from "@jest/globals";
  2. import { isVisionModel } from "../app/utils";
  3. describe("isVisionModel", () => {
  4. const originalEnv = process.env;
  5. beforeEach(() => {
  6. jest.resetModules();
  7. process.env = { ...originalEnv };
  8. });
  9. afterEach(() => {
  10. process.env = originalEnv;
  11. });
  12. test("should identify vision models using regex patterns", () => {
  13. const visionModels = [
  14. "gpt-4-vision",
  15. "claude-3-opus",
  16. "gemini-1.5-pro",
  17. "gemini-2.0",
  18. "gemini-exp-vision",
  19. "learnlm-vision",
  20. "qwen-vl-max",
  21. "qwen2-vl-max",
  22. "gpt-4-turbo",
  23. "dall-e-3",
  24. ];
  25. visionModels.forEach((model) => {
  26. expect(isVisionModel(model)).toBe(true);
  27. });
  28. });
  29. test("should exclude specific models", () => {
  30. expect(isVisionModel("claude-3-5-haiku-20241022")).toBe(false);
  31. });
  32. test("should not identify non-vision models", () => {
  33. const nonVisionModels = [
  34. "gpt-3.5-turbo",
  35. "gpt-4-turbo-preview",
  36. "claude-2",
  37. "regular-model",
  38. ];
  39. nonVisionModels.forEach((model) => {
  40. expect(isVisionModel(model)).toBe(false);
  41. });
  42. });
  43. test("should identify models from VISION_MODELS env var", () => {
  44. process.env.VISION_MODELS = "custom-vision-model,another-vision-model";
  45. expect(isVisionModel("custom-vision-model")).toBe(true);
  46. expect(isVisionModel("another-vision-model")).toBe(true);
  47. expect(isVisionModel("unrelated-model")).toBe(false);
  48. });
  49. test("should handle empty or missing VISION_MODELS", () => {
  50. process.env.VISION_MODELS = "";
  51. expect(isVisionModel("unrelated-model")).toBe(false);
  52. delete process.env.VISION_MODELS;
  53. expect(isVisionModel("unrelated-model")).toBe(false);
  54. expect(isVisionModel("gpt-4-vision")).toBe(true);
  55. });
  56. });