welsonjs/lib/anthropic.js
2024-12-27 14:53:17 +09:00

61 lines
1.8 KiB
JavaScript

// anthropic.js
// Namhyeon Go <abuse@catswords.net>
// https://github.com/gnh1201/welsonjs
//
// ***SECURITY NOTICE***
// Anthropic/Claude requires an internet connection, and data may be transmitted externally. Users must adhere to the terms of use and privacy policy.
// - Privacy Policy: https://www.anthropic.com/legal/privacy
//
var FILE = require("lib/file");
var HTTP = require("lib/http");
var APIKEY = require("lib/apikey");
function chat(content) {
var answers = [];
var apikey = APIKEY.getApiKey("anthropic");
console.log("Anthropic (Claude) API KEY:", apikey);
var response = HTTP.create("MSXML")
.setVariables({
"ANTHROPIC_API_KEY": apikey
})
.setContentType("application/json")
.setHeaders({
"x-api-key": "{ANTHROPIC_API_KEY}",
"anthropic-version": "2023-06-01"
})
.setRequestBody({
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [{
"role": "user",
"content": content
}]
})
.open("post", "https://api.anthropic.com/v1/messages")
.send()
.responseBody;
if ("error" in response) {
answers.push("Error: " + response.error.message);
} else if ("content" in response && response.content.length > 0) {
response.content.forEach(function(x) {
if (x.type == "text") {
answers.push(x.text);
} else {
answers.push("Not supported type: " + x.type);
}
});
}
return answers.join(' ');
}
exports.chat = chat;
exports.VERSIONINFO = "Anthropic (Claude) interface (anthropic.js) version 0.1.2";
exports.AUTHOR = "abuse@catswords.net";
exports.global = global;
exports.require = global.require;