comparison src/lib/ai/claude/Claude.luan @ 76:3c60bc17403e default tip

remove ai
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 31 Aug 2025 17:40:20 -0600
parents b96cf27e719d
children
comparison
equal deleted inserted replaced
75:b96cf27e719d 76:3c60bc17403e
1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error
3 local ipairs = Luan.ipairs or error()
4 local type = Luan.type or error()
5 local Io = require "luan:Io.luan"
6 local uri = Io.uri or error()
7 local Parsers = require "luan:Parsers.luan"
8 local json_string = Parsers.json_string or error()
9 local Config = require "site:/private/Config.luan"
10 local Logging = require "luan:logging/Logging.luan"
11 local logger = Logging.logger "claude/Claude"
12
13
14 -- https://docs.anthropic.com/
15
16 local Claude = {}
17
18 local url = "https://api.anthropic.com/v1/messages"
19 local headers = {
20 ["x-api-key"] = Config.claude.key or error()
21 ["anthropic-version"] = "2023-06-01"
22 ["Content-Type"] = "application/json"
23 }
24 local model = "claude-sonnet-4-0"
25 local max_tokens = 8192
26
27 function Claude.chat(thread)
28 thread.model = thread.model or model
29 thread.max_tokens = thread.max_tokens or max_tokens
30 local options = {
31 method = "POST"
32 headers = headers
33 content = json_string(thread)
34 }
35 try
36 local response = uri(url,options).read_text()
37 return response
38 catch e
39 logger.error(options.content)
40 e.throw()
41 end
42 end
43
44 return Claude