embeddings.ts 560 B

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