embeddings.ts 647 B

123456789101112131415161718192021222324252627
  1. import crypto from 'crypto';
  2. import type { OpenAI } from 'openai';
  3. import { configManager } from '~/server/service/config-manager';
  4. import { openaiClient } from './client';
  5. export const embed = async(input: string, username?: string): Promise<OpenAI.Embedding[]> => {
  6. let user;
  7. if (username != null) {
  8. const hasher = crypto.createHash('sha256');
  9. hasher.update(username);
  10. user = hasher.digest('hex');
  11. }
  12. const result = await openaiClient.embeddings.create({
  13. input,
  14. model: 'text-embedding-3-large',
  15. dimensions: configManager.getConfig('crowi', 'app:openaiDimensions'),
  16. user,
  17. });
  18. return result.data;
  19. };