Spaces:
Paused
Paused
File size: 2,064 Bytes
f6091f7 916e00a f6091f7 916e00a ee8e5b5 eef247f 916e00a 29df9bc ee8e5b5 916e00a 29df9bc 916e00a f6091f7 916e00a 2cd9790 916e00a 2cd9790 916e00a 2016044 916e00a 2016044 916e00a 2016044 916e00a 2016044 916e00a 2016044 916e00a 29df9bc 916e00a 2016044 916e00a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import { GoogleCustomSearch } from "openai-function-calling-tools";
import { LLMError, LLMStream } from './stream';
// @ts-expect-error
import wasm from '@dqbd/tiktoken/lite/tiktoken_bg.wasm?module';
import tiktokenModel from '@dqbd/tiktoken/encoders/cl100k_base.json';
import { Tiktoken, init } from '@dqbd/tiktoken/lite/init';
export const config = {};
const handler = async (req) => {
try {
const { question } = (await req.json());
await init((imports) => WebAssembly.instantiate(wasm, imports));
const googleCustomSearch = new GoogleCustomSearch({
apiKey: process.env.API_KEY,
googleCSEId: process.env.CONTEXT_KEY,
});
const messages = [
{
role: "user",
content: question,
},
];
const functions = {
googleCustomSearch,
};
const encoding = new Tiktoken(
tiktokenModel.bpe_ranks,
tiktokenModel.special_tokens,
tiktokenModel.pat_str,
);
let promptToSend = question;
if (!promptToSend) {
promptToSend = "";
}
let temperatureToUse = temperature;
if (temperatureToUse == null) {
temperatureToUse = 0.8;
}
const prompt_tokens = encoding.encode(promptToSend);
let tokenCount = prompt_tokens.length;
let messagesToSend = [];
for (let i = messages.length - 1; i >= 0; i--) {
const message = messages[i];
const tokens = encoding.encode(message.content);
if (tokenCount + tokens.length + 1000 > model.tokenLimit) {
break;
}
tokenCount += tokens.length;
messagesToSend = [message, ...messagesToSend];
}
encoding.free();
const stream = await LLMStream(model, promptToSend, temperatureToUse, key, messagesToSend, functions);
return new Response(stream);
} catch (error) {
console.error(error);
if (error instanceof LLMError) {
return new Response('Error', { status: 500, statusText: error.message });
} else {
return new Response('Error', { status: 500 });
}
}
};
export default handler; |