| _id: anthropic |
| description: Ask Claude agent |
| readme: The first base version |
| title: Anthropic |
| url: https://raw.githubusercontent.com/breslavsky/piper-packages/main/packages/anthropic.yaml |
| version: 1 |
| nodes: |
| ask_claude: |
| _id: ask_claude |
| arrange: |
| x: 140 |
| y: 90 |
| category: |
| id: llm_agents |
| title: en=Language Agents;ru=Языковые агенты |
| environment: |
| ANTHROPIC_API_KEY: |
| title: Anthropic API key |
| type: string |
| scope: global |
| inputs: |
| question: |
| order: 2 |
| title: en=Question;ru=Вопрос |
| type: string |
| required: true |
| multiline: true |
| model: |
| order: 2 |
| title: en=Model;ru=Модель |
| type: string |
| required: true |
| default: claude-3-5-sonnet-latest |
| enum: |
| - claude-3-5-sonnet-latest|Claude 3.5 Sonnet |
| outputs: |
| answer: |
| title: en=Answer;ru=Ответ |
| type: string |
| json: |
| title: JSON |
| type: json |
| package: anthropic |
| script: | |
| const Anthropic = require('@anthropic-ai/sdk'); |
| |
| const ANTHROPIC_API_KEY = env?.variables?.get('ANTHROPIC_API_KEY'); |
| if(!ANTHROPIC_API_KEY) { |
| error.fatal('Please, set your API key for Anthropic'); |
| } |
|
|
| const client = new Anthropic({ apiKey: ANTHROPIC_API_KEY }); |
|
|
| (async () => { |
| const { model, question } = inputs; |
|
|
| const message = await client.messages.create({ |
| max_tokens: 1024, |
| messages: [{ role: 'user', content: question }], |
| model |
| }); |
|
|
| const { content: [{type, text: answer}] } = message; |
| log({type}); |
| |
| switch(type) { |
| case "text": |
| default: |
| try { |
| const json = answer.replace(/^\`\`\`json\s*/ig, '').replace(/\`\`\`\s*$/ig, ''); |
| return next({outputs: { json: JSON.parse(json) }}); |
| } catch(e) { |
| log(e); |
| // plain text |
| } |
| return next({outputs: { answer }}); |
| } |
| })(); |
| source: catalog |
| title: en=Ask Claude;ru=Спросить Claude |
| version: 1 |
|
|