( prompt: string, targetLang: Language )
| 45 | * Translate text to the target language using generative AI. |
| 46 | */ |
| 47 | const translate = async ( |
| 48 | prompt: string, |
| 49 | targetLang: Language |
| 50 | ): Promise<string | undefined> => { |
| 51 | try { |
| 52 | const response = await ( |
| 53 | await fetch("https://api.anthropic.com/v1/messages", { |
| 54 | method: "POST", |
| 55 | headers: { |
| 56 | "x-api-key": ANTHROPIC_API_KEY, |
| 57 | "anthropic-version": "2023-06-01", |
| 58 | "content-type": "application/json", |
| 59 | }, |
| 60 | body: JSON.stringify({ |
| 61 | model: ANTHROPIC_MODEL, |
| 62 | max_tokens: 1024, |
| 63 | messages: [{ role: "user", content: prompt }], |
| 64 | system: SYSTEM_PROMPT(targetLang), |
| 65 | stream: false, |
| 66 | }), |
| 67 | }) |
| 68 | ).json(); |
| 69 | |
| 70 | const error = response.error; |
| 71 | if (error) { |
| 72 | throw new Error(`[${error.type}] ${error.message}`); |
| 73 | } |
| 74 | |
| 75 | return response.content.reverse()[0].text; |
| 76 | } catch (error) { |
| 77 | console.error(`Error translating to ${targetLang[1]}:`, error); |
| 78 | return undefined; |
| 79 | } |
| 80 | }; |
| 81 | |
| 82 | const STACKS = glob("../hub/immi*/stack.yaml"); |
| 83 |
no test coverage detected