-
Notifications
You must be signed in to change notification settings - Fork 0
/
lemur.go
117 lines (91 loc) · 3.6 KB
/
lemur.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package assemblyai
import (
"context"
)
const (
// LeMUR Default is best at complex reasoning. It offers more nuanced
// responses and improved contextual comprehension.
LeMURModelDefault LeMURModel = "default"
// LeMUR Basic is a simplified model optimized for speed and cost. LeMUR
// Basic can complete requests up to 20% faster than Default.
LeMURModelBasic LeMURModel = "basic"
// Claude 2.1 is similar to Default, with key improvements: it minimizes
// model hallucination and system prompts, has a larger context window, and
// performs better in citations.
LeMURModelAssemblyAIMistral7B LeMURModel = "assemblyai/mistral-7b"
// LeMUR Mistral 7B is an LLM self-hosted by AssemblyAI. It's the fastest
// and cheapest of the LLM options. We recommend it for use cases like basic
// summaries and factual Q&A.
LeMURModelAnthropicClaude2_1 LeMURModel = "anthropic/claude-2-1"
)
// LeMURService groups the operations related to LeMUR.
type LeMURService struct {
client *Client
}
// Question returns answers to free-form questions about one or more transcripts.
//
// https://www.assemblyai.com/docs/Models/lemur#question--answer
func (s *LeMURService) Question(ctx context.Context, params LeMURQuestionAnswerParams) (LeMURQuestionAnswerResponse, error) {
var response LeMURQuestionAnswerResponse
req, err := s.client.newJSONRequest(ctx, "POST", "/lemur/v3/generate/question-answer", params)
if err != nil {
return LeMURQuestionAnswerResponse{}, err
}
if _, err := s.client.do(req, &response); err != nil {
return LeMURQuestionAnswerResponse{}, err
}
return response, nil
}
// Summarize returns a custom summary of a set of transcripts.
//
// https://www.assemblyai.com/docs/Models/lemur#action-items
func (s *LeMURService) Summarize(ctx context.Context, params LeMURSummaryParams) (LeMURSummaryResponse, error) {
req, err := s.client.newJSONRequest(ctx, "POST", "/lemur/v3/generate/summary", params)
if err != nil {
return LeMURSummaryResponse{}, err
}
var response LeMURSummaryResponse
if _, err := s.client.do(req, &response); err != nil {
return LeMURSummaryResponse{}, err
}
return response, nil
}
// ActionItems returns a set of action items based on a set of transcripts.
//
// https://www.assemblyai.com/docs/Models/lemur#action-items
func (s *LeMURService) ActionItems(ctx context.Context, params LeMURActionItemsParams) (LeMURActionItemsResponse, error) {
req, err := s.client.newJSONRequest(ctx, "POST", "/lemur/v3/generate/action-items", params)
if err != nil {
return LeMURActionItemsResponse{}, err
}
var response LeMURActionItemsResponse
if _, err := s.client.do(req, &response); err != nil {
return LeMURActionItemsResponse{}, err
}
return response, nil
}
// Task lets you submit a custom prompt to LeMUR.
//
// https://www.assemblyai.com/docs/Models/lemur#task
func (s *LeMURService) Task(ctx context.Context, params LeMURTaskParams) (LeMURTaskResponse, error) {
req, err := s.client.newJSONRequest(ctx, "POST", "/lemur/v3/generate/task", params)
if err != nil {
return LeMURTaskResponse{}, err
}
var response LeMURTaskResponse
if _, err := s.client.do(req, &response); err != nil {
return LeMURTaskResponse{}, err
}
return response, nil
}
func (s *LeMURService) PurgeRequestData(ctx context.Context, requestID string) (PurgeLeMURRequestDataResponse, error) {
req, err := s.client.newJSONRequest(ctx, "DELETE", "/lemur/v3/"+requestID, nil)
if err != nil {
return PurgeLeMURRequestDataResponse{}, err
}
var response PurgeLeMURRequestDataResponse
if _, err := s.client.do(req, &response); err != nil {
return PurgeLeMURRequestDataResponse{}, err
}
return response, nil
}