diff src/lib/claude/Claude.luan @ 76:3c60bc17403e

remove ai
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 31 Aug 2025 17:40:20 -0600
parents src/lib/ai/claude/Claude.luan@64e35a92d163
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib/claude/Claude.luan	Sun Aug 31 17:40:20 2025 -0600
@@ -0,0 +1,44 @@
+local Luan = require "luan:Luan.luan"
+local error = Luan.error
+local ipairs = Luan.ipairs or error()
+local type = Luan.type or error()
+local Io = require "luan:Io.luan"
+local uri = Io.uri or error()
+local Parsers = require "luan:Parsers.luan"
+local json_string = Parsers.json_string or error()
+local Config = require "site:/private/Config.luan"
+local Logging = require "luan:logging/Logging.luan"
+local logger = Logging.logger "claude/Claude"
+
+
+-- https://docs.anthropic.com/
+
+local Claude = {}
+
+local url = "https://api.anthropic.com/v1/messages"
+local headers = {
+	["x-api-key"] = Config.claude.key or error()
+	["anthropic-version"] = "2023-06-01"
+	["Content-Type"] = "application/json"
+}
+local model = "claude-sonnet-4-0"
+local max_tokens = 8192
+
+function Claude.chat(thread)
+	thread.model = thread.model or model
+	thread.max_tokens = thread.max_tokens or max_tokens
+	local options = {
+		method = "POST"
+		headers = headers
+		content = json_string(thread)
+	}
+	try
+		local response = uri(url,options).read_text()
+		return response
+	catch e
+		logger.error(options.content)
+		e.throw()
+	end
+end
+
+return Claude