Skip to content

Commit d95e726

Browse files
Add ability to pass trace in request context
1 parent 1f2e9ce commit d95e726

File tree

22 files changed

+69
-57
lines changed

22 files changed

+69
-57
lines changed

README.md

+23-23
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ client := mirage.New("ui_xxxxxx", "sk_xxxxxx")
3232
Then, consume the client eg. to transcribe a audio file containing speech to text:
3333

3434
```go
35-
data, err := client.Task.TranscribeSpeech(mirage.TranscribeSpeechRequest {
35+
data, err := client.Task.TranscribeSpeech(mirage.RequestContext{}, mirage.TranscribeSpeechRequest {
3636
Locale: mirage.TranscribeSpeechRequestLocale {
3737
To: "en",
3838
},
@@ -63,13 +63,13 @@ This library implements all methods the Mirage API provides. See the [API docs](
6363

6464
#### ➡️ Transcribe Speech
6565

66-
* **Method:** `client.Task.TranscribeSpeech(data)`
66+
* **Method:** `client.Task.TranscribeSpeech(ctx, data)`
6767
* **Reference:** [Transcribe Speech](https://docs.mirage-ai.com/references/api/v1/#transcribe-speech)
6868

6969
* **Request:**
7070

7171
```go
72-
client.Task.TranscribeSpeech(mirage.TranscribeSpeechRequest {
72+
client.Task.TranscribeSpeech(mirage.RequestContext{}, mirage.TranscribeSpeechRequest {
7373
Locale: mirage.TranscribeSpeechRequestLocale {
7474
To: "en",
7575
},
@@ -103,13 +103,13 @@ client.Task.TranscribeSpeech(mirage.TranscribeSpeechRequest {
103103

104104
#### ➡️ Answer Prompt
105105

106-
* **Method:** `client.Task.AnswerPrompt(data)`
106+
* **Method:** `client.Task.AnswerPrompt(ctx, data)`
107107
* **Reference:** [Answer Prompt](https://docs.mirage-ai.com/references/api/v1/#answer-prompt)
108108

109109
* **Request:**
110110

111111
```go
112-
client.Task.AnswerPrompt(mirage.AnswerPromptRequest {
112+
client.Task.AnswerPrompt(mirage.RequestContext{}, mirage.AnswerPromptRequest {
113113
Prompt: "Generate an article about Alpacas",
114114
})
115115
```
@@ -129,15 +129,15 @@ client.Task.AnswerPrompt(mirage.AnswerPromptRequest {
129129

130130
#### ➡️ Answer Question
131131

132-
* **Method:** `client.Task.AnswerQuestion(data)`
132+
* **Method:** `client.Task.AnswerQuestion(ctx, data)`
133133
* **Reference:** [Answer Question](https://docs.mirage-ai.com/references/api/v1/#answer-question)
134134

135135
* **Request:**
136136

137137
```go
138138
answerStart := "Sure,"
139139

140-
client.Task.AnswerQuestion(mirage.AnswerQuestionRequest {
140+
client.Task.AnswerQuestion(mirage.RequestContext{}, mirage.AnswerQuestionRequest {
141141
Question: "Should I pay more for that?",
142142

143143
Answer: &mirage.AnswerQuestionRequestAnswer {
@@ -185,13 +185,13 @@ client.Task.AnswerQuestion(mirage.AnswerQuestionRequest {
185185

186186
#### ➡️ Summarize Paragraphs
187187

188-
* **Method:** `client.Task.SummarizeParagraphs(data)`
188+
* **Method:** `client.Task.SummarizeParagraphs(ctx, data)`
189189
* **Reference:** [Summarize Paragraphs](https://docs.mirage-ai.com/references/api/v1/#summarize-paragraphs)
190190

191191
* **Request:**
192192

193193
```go
194-
client.Task.SummarizeParagraphs(mirage.SummarizeParagraphsRequest {
194+
client.Task.SummarizeParagraphs(mirage.RequestContext{}, mirage.SummarizeParagraphsRequest {
195195
Paragraphs: []mirage.SummarizeParagraphsRequestParagraph {
196196
mirage.SummarizeParagraphsRequestParagraph {
197197
Text: "GPT-4 is getting worse over time, not better.",
@@ -218,13 +218,13 @@ client.Task.SummarizeParagraphs(mirage.SummarizeParagraphsRequest {
218218

219219
#### ➡️ Summarize Conversation
220220

221-
* **Method:** `client.Task.SummarizeConversation(data)`
221+
* **Method:** `client.Task.SummarizeConversation(ctx, data)`
222222
* **Reference:** [Summarize Conversation](https://docs.mirage-ai.com/references/api/v1/#summarize-conversation)
223223

224224
* **Request:**
225225

226226
```go
227-
client.Task.SummarizeConversation(mirage.SummarizeConversationRequest {
227+
client.Task.SummarizeConversation(mirage.RequestContext{}, mirage.SummarizeConversationRequest {
228228
Transcript: []mirage.SummarizeConversationRequestTranscript {
229229
mirage.SummarizeConversationRequestTranscript {
230230
Name: "Valerian",
@@ -253,13 +253,13 @@ client.Task.SummarizeConversation(mirage.SummarizeConversationRequest {
253253

254254
#### ➡️ Categorize Conversations
255255

256-
* **Method:** `client.Task.CategorizeConversations(data)`
256+
* **Method:** `client.Task.CategorizeConversations(ctx, data)`
257257
* **Reference:** [Categorize Conversations](https://docs.mirage-ai.com/references/api/v1/#categorize-conversations)
258258

259259
* **Request:**
260260

261261
```go
262-
client.Task.CategorizeConversations(mirage.CategorizeConversationsRequest {
262+
client.Task.CategorizeConversations(mirage.RequestContext{}, mirage.CategorizeConversationsRequest {
263263
Conversations: []mirage.CategorizeConversationsRequestConversation {
264264
mirage.CategorizeConversationsRequestConversation {
265265
Transcript: []mirage.CategorizeConversationsRequestConversationTranscript {
@@ -294,15 +294,15 @@ client.Task.CategorizeConversations(mirage.CategorizeConversationsRequest {
294294

295295
#### ➡️ Rank Question
296296

297-
* **Method:** `client.Task.RankQuestion(data)`
297+
* **Method:** `client.Task.RankQuestion(ctx, data)`
298298
* **Reference:** [Rank Question](https://docs.mirage-ai.com/references/api/v1/#rank-question)
299299

300300
* **Request:**
301301

302302
```go
303303
rankSource := "helpdesk"
304304

305-
client.Task.RankQuestion(mirage.RankQuestionRequest {
305+
client.Task.RankQuestion(mirage.RequestContext{}, mirage.RankQuestionRequest {
306306
Question: "Hi! I am having issues setting up DNS records for my Crisp helpdesk. Can you help?",
307307

308308
Context: mirage.RankQuestionRequestContext {
@@ -346,15 +346,15 @@ client.Task.RankQuestion(mirage.RankQuestionRequest {
346346

347347
#### ➡️ Translate Text
348348

349-
* **Method:** `client.Task.TranslateText(data)`
349+
* **Method:** `client.Task.TranslateText(ctx, data)`
350350
* **Reference:** [Translate Text](https://docs.mirage-ai.com/references/api/v1/#translate-text)
351351

352352
* **Request:**
353353

354354
```go
355355
translateType := "html"
356356

357-
client.Task.TranslateText(mirage.TranslateTextRequest {
357+
client.Task.TranslateText(mirage.RequestContext{}, mirage.TranslateTextRequest {
358358
Locale: mirage.TranslateTextRequestLocale {
359359
From: "fr",
360360
To: "en",
@@ -379,13 +379,13 @@ client.Task.TranslateText(mirage.TranslateTextRequest {
379379

380380
#### ➡️ Fraud Spamicity
381381

382-
* **Method:** `client.Task.FraudSpamicity(data)`
382+
* **Method:** `client.Task.FraudSpamicity(ctx, data)`
383383
* **Reference:** [Fraud Spamicity](https://docs.mirage-ai.com/references/api/v1/#fraud-spamicity)
384384

385385
* **Request:**
386386

387387
```go
388-
client.Task.FraudSpamicity(mirage.FraudSpamicityRequest {
388+
client.Task.FraudSpamicity(mirage.RequestContext{}, mirage.FraudSpamicityRequest {
389389
Name: "Crisp",
390390
Domain: "crisp.chat",
391391
EmailDomain: "mail.crisp.chat",
@@ -407,13 +407,13 @@ client.Task.FraudSpamicity(mirage.FraudSpamicityRequest {
407407

408408
#### ➡️ Spam Classify
409409

410-
* **Method:** `client.Task.SpamClassify(data)`
410+
* **Method:** `client.Task.SpamClassify(ctx, data)`
411411
* **Reference:** [Spam Classify](https://docs.mirage-ai.com/references/api/v1/#spam-classify)
412412

413413
* **Request:**
414414

415415
```go
416-
client.Task.SpamClassify(mirage.SpamClassifyRequest {
416+
client.Task.SpamClassify(mirage.RequestContext{}, mirage.SpamClassifyRequest {
417417
Sender: mirage.SpamClassifyRequestSender {
418418
Name: "John Doe",
419419
@@ -454,7 +454,7 @@ client.Task.SpamClassify(mirage.SpamClassifyRequest {
454454

455455
#### ➡️ Context Ingest
456456

457-
* **Method:** `client.data.context_ingest(data)`
457+
* **Method:** `client.Task.IngestContextData(ctx, data)`
458458
* **Reference:** [Ingest Context Data](https://docs.mirage-ai.com/references/api/v1/#ingest-context-data)
459459

460460
* **Request:**
@@ -471,7 +471,7 @@ ingestMetadata := map[string]string{
471471
"another_key": "another_value",
472472
}
473473

474-
data, err := client.Task.IngestContextData(mirage.IngestContextDataRequest {
474+
data, err := client.Task.IngestContextData(mirage.RequestContext{}, mirage.IngestContextDataRequest {
475475
Items: []mirage.IngestContextDataRequestItem {
476476
mirage.IngestContextDataRequestItem {
477477
Operation: "index",

data_context.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ func (instance IngestContextDataResponse) String() string {
4242

4343

4444
// IngestContextData ingest context data into account.
45-
func (service *TaskService) IngestContextData(data IngestContextDataRequest) (*IngestContextDataResponse, error) {
46-
req, _ := service.client.NewRequest("POST", "data/context/ingest", data)
45+
func (service *TaskService) IngestContextData(ctx RequestContext, data IngestContextDataRequest) (*IngestContextDataResponse, error) {
46+
req, _ := service.client.NewRequest("POST", "data/context/ingest", data, ctx)
4747

4848
result := new(IngestContextDataResponseData)
4949
_, err := service.client.Do(req, result)

examples/data_context_ingest/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func main() {
3131
}
3232

3333
// Ingest provided context data
34-
data, err := client.Task.IngestContextData(mirage.IngestContextDataRequest {
34+
data, err := client.Task.IngestContextData(mirage.RequestContext{}, mirage.IngestContextDataRequest {
3535
Items: []mirage.IngestContextDataRequestItem {
3636
mirage.IngestContextDataRequestItem {
3737
Operation: "index",

examples/task_answer_prompt/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func main() {
1919
client := mirage.New(CONFIG_USER_ID, CONFIG_SECRET_KEY)
2020

2121
// Answer provided prompt
22-
data, err := client.Task.AnswerPrompt(mirage.AnswerPromptRequest {
22+
data, err := client.Task.AnswerPrompt(mirage.RequestContext{}, mirage.AnswerPromptRequest {
2323
Prompt: "Generate an article about Alpacas",
2424
})
2525

examples/task_answer_question/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func main() {
2222
answerStart := "Sure,"
2323

2424
// Answer provided question
25-
data, err := client.Task.AnswerQuestion(mirage.AnswerQuestionRequest {
25+
data, err := client.Task.AnswerQuestion(mirage.RequestContext{}, mirage.AnswerQuestionRequest {
2626
Question: "Should I pay more for that?",
2727

2828
Answer: &mirage.AnswerQuestionRequestAnswer {

examples/task_categorize_conversations/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func main() {
1919
client := mirage.New(CONFIG_USER_ID, CONFIG_SECRET_KEY)
2020

2121
// Categorize provided conversations
22-
data, err := client.Task.CategorizeConversations(mirage.CategorizeConversationsRequest {
22+
data, err := client.Task.CategorizeConversations(mirage.RequestContext{}, mirage.CategorizeConversationsRequest {
2323
Conversations: []mirage.CategorizeConversationsRequestConversation {
2424
mirage.CategorizeConversationsRequestConversation {
2525
Transcript: []mirage.CategorizeConversationsRequestConversationTranscript {

examples/task_fraud_spamicity/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func main() {
1919
client := mirage.New(CONFIG_USER_ID, CONFIG_SECRET_KEY)
2020

2121
// Fraud check classification on scammy websites
22-
data, err := client.Task.FraudSpamicity(mirage.FraudSpamicityRequest {
22+
data, err := client.Task.FraudSpamicity(mirage.RequestContext{}, mirage.FraudSpamicityRequest {
2323
Name: "Crisp",
2424
Domain: "crisp.chat",
2525
EmailDomain: "mail.crisp.chat",

examples/task_rank_question/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func main() {
2222
rankSource := "helpdesk"
2323

2424
// Rank provided question results
25-
data, err := client.Task.RankQuestion(mirage.RankQuestionRequest {
25+
data, err := client.Task.RankQuestion(mirage.RequestContext{}, mirage.RankQuestionRequest {
2626
Question: "Hi! I am having issues setting up DNS records for my Crisp helpdesk. Can you help?",
2727

2828
Context: mirage.RankQuestionRequestContext {

examples/task_spam_classify/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func main() {
1919
client := mirage.New(CONFIG_USER_ID, CONFIG_SECRET_KEY)
2020

2121
// Spam classification on email messages
22-
data, err := client.Task.SpamClassify(mirage.SpamClassifyRequest {
22+
data, err := client.Task.SpamClassify(mirage.RequestContext{}, mirage.SpamClassifyRequest {
2323
Sender: mirage.SpamClassifyRequestSender {
2424
Name: "John Doe",
2525

examples/task_summarize_conversation/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func main() {
1919
client := mirage.New(CONFIG_USER_ID, CONFIG_SECRET_KEY)
2020

2121
// Summarize provided conversation
22-
data, err := client.Task.SummarizeConversation(mirage.SummarizeConversationRequest {
22+
data, err := client.Task.SummarizeConversation(mirage.RequestContext{}, mirage.SummarizeConversationRequest {
2323
Transcript: []mirage.SummarizeConversationRequestTranscript {
2424
mirage.SummarizeConversationRequestTranscript {
2525
Name: "Valerian",

examples/task_summarize_paragraphs/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func main() {
1919
client := mirage.New(CONFIG_USER_ID, CONFIG_SECRET_KEY)
2020

2121
// Summarize provided paragraphs
22-
data, err := client.Task.SummarizeParagraphs(mirage.SummarizeParagraphsRequest {
22+
data, err := client.Task.SummarizeParagraphs(mirage.RequestContext{}, mirage.SummarizeParagraphsRequest {
2323
Paragraphs: []mirage.SummarizeParagraphsRequestParagraph {
2424
mirage.SummarizeParagraphsRequestParagraph {
2525
Text: "GPT-4 is getting worse over time, not better.",

examples/task_transcribe_speech/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func main() {
1919
client := mirage.New(CONFIG_USER_ID, CONFIG_SECRET_KEY)
2020

2121
// Transcribe provided audio file
22-
data, err := client.Task.TranscribeSpeech(mirage.TranscribeSpeechRequest {
22+
data, err := client.Task.TranscribeSpeech(mirage.RequestContext{}, mirage.TranscribeSpeechRequest {
2323
Locale: mirage.TranscribeSpeechRequestLocale {
2424
To: "en",
2525
},

examples/task_translate_text/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func main() {
2222
translateType := "html"
2323

2424
// Translate provided text
25-
data, err := client.Task.TranslateText(mirage.TranslateTextRequest {
25+
data, err := client.Task.TranslateText(mirage.RequestContext{}, mirage.TranslateTextRequest {
2626
Locale: mirage.TranslateTextRequestLocale {
2727
From: "fr",
2828
To: "en",

mirage.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ type service struct {
6363
client *Client
6464
}
6565

66+
// RequestContext maps custom context for a request
67+
type RequestContext struct {
68+
Trace string `json:"string"`
69+
}
70+
6671
// Response maps an API HTTP response
6772
type Response struct {
6873
*http.Response
@@ -125,7 +130,7 @@ func New(userID string, secretKey string) *Client {
125130

126131

127132
// NewRequest creates an API request
128-
func (client *Client) NewRequest(method, urlStr string, body interface{}) (*http.Request, error) {
133+
func (client *Client) NewRequest(method, urlStr string, body interface{}, ctx RequestContext) (*http.Request, error) {
129134
rel, err := url.Parse(urlStr)
130135
if err != nil {
131136
return nil, err
@@ -156,6 +161,13 @@ func (client *Client) NewRequest(method, urlStr string, body interface{}) (*http
156161
req.Header.Add("User-Agent", client.UserAgent)
157162
}
158163

164+
if ctx.Trace != "" {
165+
// Stamp request with provided trace identifier (this is optional, but \
166+
// can be used to track request flows across Mirage backend systems, for \
167+
// debugging purposes)
168+
req.Header.Add("X-Request-ID", ctx.Trace)
169+
}
170+
159171
return req, nil
160172
}
161173

task_answer.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ func (instance AnswerQuestionResponse) String() string {
122122

123123

124124
// AnswerPrompt answer a given prompt.
125-
func (service *TaskService) AnswerPrompt(data AnswerPromptRequest) (*AnswerPromptResponse, error) {
126-
req, _ := service.client.NewRequest("POST", "task/answer/prompt", data)
125+
func (service *TaskService) AnswerPrompt(ctx RequestContext, data AnswerPromptRequest) (*AnswerPromptResponse, error) {
126+
req, _ := service.client.NewRequest("POST", "task/answer/prompt", data, ctx)
127127

128128
result := new(AnswerPromptResponseData)
129129
_, err := service.client.Do(req, result)
@@ -136,8 +136,8 @@ func (service *TaskService) AnswerPrompt(data AnswerPromptRequest) (*AnswerPromp
136136

137137

138138
// AnswerQuestion answer a given question.
139-
func (service *TaskService) AnswerQuestion(data AnswerQuestionRequest) (*AnswerQuestionResponse, error) {
140-
req, _ := service.client.NewRequest("POST", "task/answer/question", data)
139+
func (service *TaskService) AnswerQuestion(ctx RequestContext, data AnswerQuestionRequest) (*AnswerQuestionResponse, error) {
140+
req, _ := service.client.NewRequest("POST", "task/answer/question", data, ctx)
141141

142142
result := new(AnswerQuestionResponseData)
143143
_, err := service.client.Do(req, result)

task_categorize.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ func (instance CategorizeConversationsResponse) String() string {
4141

4242

4343
// CategorizeConversations categorize multiple conversations, from a list of messages for each individual conversation.
44-
func (service *TaskService) CategorizeConversations(data CategorizeConversationsRequest) (*CategorizeConversationsResponse, error) {
45-
req, _ := service.client.NewRequest("POST", "task/categorize/conversations", data)
44+
func (service *TaskService) CategorizeConversations(ctx RequestContext, data CategorizeConversationsRequest) (*CategorizeConversationsResponse, error) {
45+
req, _ := service.client.NewRequest("POST", "task/categorize/conversations", data, ctx)
4646

4747
result := new(CategorizeConversationsResponseData)
4848
_, err := service.client.Do(req, result)

task_fraud.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ func (instance FraudSpamicityResponse) String() string {
3333

3434

3535
// FraudSpamicity fraud check classification on scammy websites using a website name, domain and email domain.
36-
func (service *TaskService) FraudSpamicity(data FraudSpamicityRequest) (*FraudSpamicityResponse, error) {
37-
req, _ := service.client.NewRequest("POST", "task/fraud/spamicity", data)
36+
func (service *TaskService) FraudSpamicity(ctx RequestContext, data FraudSpamicityRequest) (*FraudSpamicityResponse, error) {
37+
req, _ := service.client.NewRequest("POST", "task/fraud/spamicity", data, ctx)
3838

3939
result := new(FraudSpamicityResponseData)
4040
_, err := service.client.Do(req, result)

task_rank.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ func (instance RankQuestionResponse) String() string {
6969

7070

7171
// RankQuestion ranks results based on a given question.
72-
func (service *TaskService) RankQuestion(data RankQuestionRequest) (*RankQuestionResponse, error) {
73-
req, _ := service.client.NewRequest("POST", "task/rank/question", data)
72+
func (service *TaskService) RankQuestion(ctx RequestContext, data RankQuestionRequest) (*RankQuestionResponse, error) {
73+
req, _ := service.client.NewRequest("POST", "task/rank/question", data, ctx)
7474

7575
result := new(RankQuestionResponseData)
7676
_, err := service.client.Do(req, result)

0 commit comments

Comments
 (0)