langsmith 0.7.7 → 0.7.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +161 -15
- package/dist/_openapi_client/client.cjs +814 -0
- package/dist/_openapi_client/client.d.ts +247 -0
- package/dist/_openapi_client/client.js +777 -0
- package/dist/_openapi_client/core/api-promise.cjs +100 -0
- package/dist/_openapi_client/core/api-promise.d.ts +45 -0
- package/dist/_openapi_client/core/api-promise.js +96 -0
- package/dist/_openapi_client/core/error.cjs +134 -0
- package/dist/_openapi_client/core/error.d.ts +45 -0
- package/dist/_openapi_client/core/error.js +118 -0
- package/dist/_openapi_client/core/pagination.cjs +374 -0
- package/dist/_openapi_client/core/pagination.d.ts +157 -0
- package/dist/_openapi_client/core/pagination.js +361 -0
- package/dist/_openapi_client/core/resource.cjs +17 -0
- package/dist/_openapi_client/core/resource.d.ts +5 -0
- package/dist/_openapi_client/core/resource.js +13 -0
- package/dist/_openapi_client/core/uploads.cjs +5 -0
- package/dist/_openapi_client/core/uploads.d.ts +2 -0
- package/dist/_openapi_client/core/uploads.js +1 -0
- package/dist/_openapi_client/index.cjs +29 -0
- package/dist/_openapi_client/index.d.ts +6 -0
- package/dist/_openapi_client/index.js +8 -0
- package/dist/_openapi_client/internal/builtin-types.cjs +4 -0
- package/dist/_openapi_client/internal/builtin-types.d.ts +72 -0
- package/dist/_openapi_client/internal/builtin-types.js +3 -0
- package/dist/_openapi_client/internal/detect-platform.cjs +162 -0
- package/dist/_openapi_client/internal/detect-platform.d.ts +14 -0
- package/dist/_openapi_client/internal/detect-platform.js +157 -0
- package/dist/_openapi_client/internal/errors.cjs +41 -0
- package/dist/_openapi_client/internal/errors.d.ts +2 -0
- package/dist/_openapi_client/internal/errors.js +36 -0
- package/dist/_openapi_client/internal/headers.cjs +79 -0
- package/dist/_openapi_client/internal/headers.d.ts +5 -0
- package/dist/_openapi_client/internal/headers.js +74 -0
- package/dist/_openapi_client/internal/parse.cjs +40 -0
- package/dist/_openapi_client/internal/parse.d.ts +11 -0
- package/dist/_openapi_client/internal/parse.js +37 -0
- package/dist/_openapi_client/internal/qs/formats.cjs +12 -0
- package/dist/_openapi_client/internal/qs/formats.d.ts +6 -0
- package/dist/_openapi_client/internal/qs/formats.js +8 -0
- package/dist/_openapi_client/internal/qs/stringify.cjs +277 -0
- package/dist/_openapi_client/internal/qs/stringify.d.ts +2 -0
- package/dist/_openapi_client/internal/qs/stringify.js +274 -0
- package/dist/_openapi_client/internal/qs/types.cjs +2 -0
- package/dist/_openapi_client/internal/qs/types.d.ts +56 -0
- package/dist/_openapi_client/internal/qs/types.js +1 -0
- package/dist/_openapi_client/internal/qs/utils.cjs +230 -0
- package/dist/_openapi_client/internal/qs/utils.d.ts +14 -0
- package/dist/_openapi_client/internal/qs/utils.js +217 -0
- package/dist/_openapi_client/internal/request-options.cjs +14 -0
- package/dist/_openapi_client/internal/request-options.d.ts +74 -0
- package/dist/_openapi_client/internal/request-options.js +10 -0
- package/dist/_openapi_client/internal/shim-types.cjs +4 -0
- package/dist/_openapi_client/internal/shim-types.d.ts +16 -0
- package/dist/_openapi_client/internal/shim-types.js +3 -0
- package/dist/_openapi_client/internal/shims.cjs +92 -0
- package/dist/_openapi_client/internal/shims.d.ts +25 -0
- package/dist/_openapi_client/internal/shims.js +85 -0
- package/dist/_openapi_client/internal/to-file.cjs +91 -0
- package/dist/_openapi_client/internal/to-file.d.ts +44 -0
- package/dist/_openapi_client/internal/to-file.js +88 -0
- package/dist/_openapi_client/internal/types.cjs +4 -0
- package/dist/_openapi_client/internal/types.d.ts +62 -0
- package/dist/_openapi_client/internal/types.js +3 -0
- package/dist/_openapi_client/internal/uploads.cjs +140 -0
- package/dist/_openapi_client/internal/uploads.d.ts +41 -0
- package/dist/_openapi_client/internal/uploads.js +130 -0
- package/dist/_openapi_client/internal/utils/env.cjs +22 -0
- package/dist/_openapi_client/internal/utils/env.d.ts +8 -0
- package/dist/_openapi_client/internal/utils/env.js +18 -0
- package/dist/_openapi_client/internal/utils/log.cjs +88 -0
- package/dist/_openapi_client/internal/utils/log.d.ts +36 -0
- package/dist/_openapi_client/internal/utils/log.js +82 -0
- package/dist/_openapi_client/internal/utils/path.cjs +79 -0
- package/dist/_openapi_client/internal/utils/path.d.ts +14 -0
- package/dist/_openapi_client/internal/utils/path.js +74 -0
- package/dist/_openapi_client/internal/utils/query.cjs +42 -0
- package/dist/_openapi_client/internal/utils/query.d.ts +1 -0
- package/dist/_openapi_client/internal/utils/query.js +6 -0
- package/dist/_openapi_client/internal/utils/sleep.cjs +7 -0
- package/dist/_openapi_client/internal/utils/sleep.d.ts +1 -0
- package/dist/_openapi_client/internal/utils/sleep.js +3 -0
- package/dist/_openapi_client/internal/utils/uuid.cjs +19 -0
- package/dist/_openapi_client/internal/utils/uuid.d.ts +4 -0
- package/dist/_openapi_client/internal/utils/uuid.js +15 -0
- package/dist/_openapi_client/internal/utils/values.cjs +112 -0
- package/dist/_openapi_client/internal/utils/values.d.ts +17 -0
- package/dist/_openapi_client/internal/utils/values.js +94 -0
- package/dist/_openapi_client/resources/annotation-queues/annotation-queues.cjs +138 -0
- package/dist/_openapi_client/resources/annotation-queues/annotation-queues.d.ts +367 -0
- package/dist/_openapi_client/resources/annotation-queues/annotation-queues.js +101 -0
- package/dist/_openapi_client/resources/annotation-queues/runs.cjs +46 -0
- package/dist/_openapi_client/resources/annotation-queues/runs.d.ts +128 -0
- package/dist/_openapi_client/resources/annotation-queues/runs.js +42 -0
- package/dist/_openapi_client/resources/commits.cjs +44 -0
- package/dist/_openapi_client/resources/commits.d.ts +204 -0
- package/dist/_openapi_client/resources/commits.js +40 -0
- package/dist/_openapi_client/resources/datasets/comparative.cjs +22 -0
- package/dist/_openapi_client/resources/datasets/comparative.d.ts +55 -0
- package/dist/_openapi_client/resources/datasets/comparative.js +18 -0
- package/dist/_openapi_client/resources/datasets/datasets.cjs +193 -0
- package/dist/_openapi_client/resources/datasets/datasets.d.ts +374 -0
- package/dist/_openapi_client/resources/datasets/datasets.js +156 -0
- package/dist/_openapi_client/resources/datasets/experiments.cjs +16 -0
- package/dist/_openapi_client/resources/datasets/experiments.d.ts +23 -0
- package/dist/_openapi_client/resources/datasets/experiments.js +12 -0
- package/dist/_openapi_client/resources/datasets/group.cjs +17 -0
- package/dist/_openapi_client/resources/datasets/group.d.ts +160 -0
- package/dist/_openapi_client/resources/datasets/group.js +13 -0
- package/dist/_openapi_client/resources/datasets/runs.cjs +29 -0
- package/dist/_openapi_client/resources/datasets/runs.d.ts +216 -0
- package/dist/_openapi_client/resources/datasets/runs.js +25 -0
- package/dist/_openapi_client/resources/datasets/share.cjs +32 -0
- package/dist/_openapi_client/resources/datasets/share.d.ts +28 -0
- package/dist/_openapi_client/resources/datasets/share.js +28 -0
- package/dist/_openapi_client/resources/datasets/splits.cjs +22 -0
- package/dist/_openapi_client/resources/datasets/splits.d.ts +30 -0
- package/dist/_openapi_client/resources/datasets/splits.js +18 -0
- package/dist/_openapi_client/resources/datasets/versions.cjs +23 -0
- package/dist/_openapi_client/resources/datasets/versions.d.ts +36 -0
- package/dist/_openapi_client/resources/datasets/versions.js +19 -0
- package/dist/_openapi_client/resources/evaluators.cjs +15 -0
- package/dist/_openapi_client/resources/evaluators.d.ts +125 -0
- package/dist/_openapi_client/resources/evaluators.js +11 -0
- package/dist/_openapi_client/resources/examples/bulk.cjs +24 -0
- package/dist/_openapi_client/resources/examples/bulk.d.ts +78 -0
- package/dist/_openapi_client/resources/examples/bulk.js +20 -0
- package/dist/_openapi_client/resources/examples/examples.cjs +124 -0
- package/dist/_openapi_client/resources/examples/examples.d.ts +182 -0
- package/dist/_openapi_client/resources/examples/examples.js +87 -0
- package/dist/_openapi_client/resources/examples/validate.cjs +21 -0
- package/dist/_openapi_client/resources/examples/validate.d.ts +38 -0
- package/dist/_openapi_client/resources/examples/validate.js +17 -0
- package/dist/_openapi_client/resources/feedback/configs.cjs +24 -0
- package/dist/_openapi_client/resources/feedback/configs.d.ts +18 -0
- package/dist/_openapi_client/resources/feedback/configs.js +20 -0
- package/dist/_openapi_client/resources/feedback/feedback.cjs +98 -0
- package/dist/_openapi_client/resources/feedback/feedback.d.ts +275 -0
- package/dist/_openapi_client/resources/feedback/feedback.js +61 -0
- package/dist/_openapi_client/resources/feedback/tokens.cjs +35 -0
- package/dist/_openapi_client/resources/feedback/tokens.d.ts +130 -0
- package/dist/_openapi_client/resources/feedback/tokens.js +31 -0
- package/dist/_openapi_client/resources/index.cjs +35 -0
- package/dist/_openapi_client/resources/index.d.ts +15 -0
- package/dist/_openapi_client/resources/index.js +17 -0
- package/dist/_openapi_client/resources/info.cjs +15 -0
- package/dist/_openapi_client/resources/info.d.ts +51 -0
- package/dist/_openapi_client/resources/info.js +11 -0
- package/dist/_openapi_client/resources/online-evaluators.cjs +70 -0
- package/dist/_openapi_client/resources/online-evaluators.d.ts +284 -0
- package/dist/_openapi_client/resources/online-evaluators.js +66 -0
- package/dist/_openapi_client/resources/public/datasets.cjs +47 -0
- package/dist/_openapi_client/resources/public/datasets.d.ts +152 -0
- package/dist/_openapi_client/resources/public/datasets.js +43 -0
- package/dist/_openapi_client/resources/public/public.cjs +62 -0
- package/dist/_openapi_client/resources/public/public.d.ts +32 -0
- package/dist/_openapi_client/resources/public/public.js +25 -0
- package/dist/_openapi_client/resources/repos/directories.cjs +40 -0
- package/dist/_openapi_client/resources/repos/directories.d.ts +72 -0
- package/dist/_openapi_client/resources/repos/directories.js +36 -0
- package/dist/_openapi_client/resources/repos/repos.cjs +93 -0
- package/dist/_openapi_client/resources/repos/repos.d.ts +188 -0
- package/dist/_openapi_client/resources/repos/repos.js +56 -0
- package/dist/_openapi_client/resources/runs/rules.cjs +9 -0
- package/dist/_openapi_client/resources/runs/rules.d.ts +3 -0
- package/dist/_openapi_client/resources/runs/rules.js +5 -0
- package/dist/_openapi_client/resources/runs/runs.cjs +102 -0
- package/dist/_openapi_client/resources/runs/runs.d.ts +542 -0
- package/dist/_openapi_client/resources/runs/runs.js +65 -0
- package/dist/_openapi_client/resources/sandboxes/boxes.cjs +86 -0
- package/dist/_openapi_client/resources/sandboxes/boxes.d.ts +1121 -0
- package/dist/_openapi_client/resources/sandboxes/boxes.js +82 -0
- package/dist/_openapi_client/resources/sandboxes/sandboxes.cjs +63 -0
- package/dist/_openapi_client/resources/sandboxes/sandboxes.d.ts +13 -0
- package/dist/_openapi_client/resources/sandboxes/sandboxes.js +26 -0
- package/dist/_openapi_client/resources/sandboxes/snapshots.cjs +39 -0
- package/dist/_openapi_client/resources/sandboxes/snapshots.d.ts +130 -0
- package/dist/_openapi_client/resources/sandboxes/snapshots.js +35 -0
- package/dist/_openapi_client/resources/sessions/insights.cjs +54 -0
- package/dist/_openapi_client/resources/sessions/insights.d.ts +246 -0
- package/dist/_openapi_client/resources/sessions/insights.js +50 -0
- package/dist/_openapi_client/resources/sessions/sessions.cjs +109 -0
- package/dist/_openapi_client/resources/sessions/sessions.d.ts +674 -0
- package/dist/_openapi_client/resources/sessions/sessions.js +72 -0
- package/dist/_openapi_client/resources/settings.cjs +15 -0
- package/dist/_openapi_client/resources/settings.d.ts +18 -0
- package/dist/_openapi_client/resources/settings.js +11 -0
- package/dist/_openapi_client/resources/workspaces.cjs +35 -0
- package/dist/_openapi_client/resources/workspaces.d.ts +84 -0
- package/dist/_openapi_client/resources/workspaces.js +31 -0
- package/dist/_openapi_client/version.cjs +5 -0
- package/dist/_openapi_client/version.d.ts +1 -0
- package/dist/_openapi_client/version.js +2 -0
- package/dist/client.cjs +48 -19
- package/dist/client.d.ts +5 -0
- package/dist/client.js +29 -0
- package/dist/env.cjs +3 -3
- package/dist/env.d.ts +1 -1
- package/dist/env.js +1 -1
- package/dist/evaluation/_runner.cjs +31 -3
- package/dist/evaluation/_runner.d.ts +2 -0
- package/dist/evaluation/_runner.js +30 -4
- package/dist/experimental/otel/exporter.cjs +1 -1
- package/dist/experimental/otel/exporter.js +2 -2
- package/dist/experimental/vercel/telemetry.cjs +1 -1
- package/dist/experimental/vercel/telemetry.js +2 -2
- package/dist/index.cjs +4 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/run_trees.cjs +1 -1
- package/dist/run_trees.js +2 -2
- package/dist/sandbox/client.cjs +11 -3
- package/dist/sandbox/client.js +11 -3
- package/dist/sandbox/errors.cjs +2 -1
- package/dist/sandbox/errors.d.ts +2 -1
- package/dist/sandbox/errors.js +2 -1
- package/dist/sandbox/index.cjs +8 -2
- package/dist/sandbox/index.d.ts +3 -2
- package/dist/sandbox/index.js +2 -1
- package/dist/sandbox/mounts.cjs +114 -0
- package/dist/sandbox/mounts.d.ts +24 -0
- package/dist/sandbox/mounts.js +109 -0
- package/dist/sandbox/proxy_config.cjs +90 -5
- package/dist/sandbox/proxy_config.d.ts +19 -4
- package/dist/sandbox/proxy_config.js +86 -4
- package/dist/sandbox/types.d.ts +92 -3
- package/dist/traceable.cjs +1 -1
- package/dist/traceable.js +2 -2
- package/dist/utils/guard.cjs +13 -0
- package/dist/utils/guard.d.ts +6 -0
- package/dist/utils/guard.js +10 -0
- package/dist/utils/jestlike/globals.cjs +1 -1
- package/dist/utils/jestlike/globals.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,36 +25,41 @@ A typical workflow looks like:
|
|
|
25
25
|
|
|
26
26
|
We'll walk through these steps in more detail below.
|
|
27
27
|
|
|
28
|
-
## Sandbox AWS
|
|
28
|
+
## Sandbox AWS Auth Proxy
|
|
29
29
|
|
|
30
|
-
When
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
When sandbox code needs to call AWS services, use the sandbox AWS auth proxy.
|
|
31
|
+
The proxy keeps the real AWS credentials outside the sandbox and signs supported
|
|
32
|
+
AWS HTTPS requests with SigV4, so code in the sandbox can use AWS SDKs normally
|
|
33
|
+
without storing long-lived AWS keys in files, environment variables, shell
|
|
34
|
+
history, or logs.
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
workspace
|
|
36
|
+
Store AWS credentials as LangSmith workspace secrets using names that make sense
|
|
37
|
+
for your workspace. Then create the sandbox with an AWS auth proxy config:
|
|
38
38
|
|
|
39
39
|
```ts
|
|
40
40
|
import {
|
|
41
41
|
SandboxClient,
|
|
42
|
-
|
|
42
|
+
awsAuth,
|
|
43
|
+
proxyConfig,
|
|
43
44
|
workspaceSecret,
|
|
44
45
|
} from "langsmith/sandbox";
|
|
45
46
|
|
|
46
47
|
const client = new SandboxClient();
|
|
48
|
+
const authConfig = proxyConfig({
|
|
49
|
+
rules: [
|
|
50
|
+
awsAuth({
|
|
51
|
+
accessKeyId: workspaceSecret("SANDBOX_AWS_ACCESS_KEY_ID"),
|
|
52
|
+
secretAccessKey: workspaceSecret("SANDBOX_AWS_SECRET_ACCESS_KEY"),
|
|
53
|
+
}),
|
|
54
|
+
],
|
|
55
|
+
});
|
|
47
56
|
|
|
48
57
|
const sandbox = await client.createSandbox({
|
|
49
58
|
name: "aws-sandbox",
|
|
50
|
-
proxyConfig:
|
|
51
|
-
accessKeyId: workspaceSecret("AWS_ACCESS_KEY_ID"),
|
|
52
|
-
secretAccessKey: workspaceSecret("AWS_SECRET_ACCESS_KEY"),
|
|
53
|
-
}),
|
|
59
|
+
proxyConfig: authConfig,
|
|
54
60
|
});
|
|
55
61
|
|
|
56
62
|
try {
|
|
57
|
-
// Your sandbox code can use the AWS SDK, the AWS CLI, or other AWS tooling normally.
|
|
58
63
|
const result = await sandbox.run("node your-aws-script.js");
|
|
59
64
|
console.log(result.stdout);
|
|
60
65
|
} finally {
|
|
@@ -64,7 +69,148 @@ try {
|
|
|
64
69
|
|
|
65
70
|
Use `opaqueSecret("...")` instead of `workspaceSecret(...)` when your application
|
|
66
71
|
needs to pass short-lived write-only AWS credentials at sandbox creation time.
|
|
67
|
-
Plaintext AWS credential values are not
|
|
72
|
+
Plaintext AWS credential values are not accepted directly; wrap them as
|
|
73
|
+
`opaqueSecret(...)` values.
|
|
74
|
+
|
|
75
|
+
## Sandbox GCP Auth Proxy
|
|
76
|
+
|
|
77
|
+
When sandbox code needs to call Google APIs, use the sandbox GCP auth proxy.
|
|
78
|
+
The proxy keeps the service account JSON outside the sandbox and injects OAuth
|
|
79
|
+
bearer tokens for the Google API hosts you explicitly match.
|
|
80
|
+
|
|
81
|
+
Store the service account JSON as a LangSmith workspace secret. Then create the
|
|
82
|
+
sandbox with a GCP auth proxy config:
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
import {
|
|
86
|
+
SandboxClient,
|
|
87
|
+
gcpAuth,
|
|
88
|
+
proxyConfig,
|
|
89
|
+
workspaceSecret,
|
|
90
|
+
} from "langsmith/sandbox";
|
|
91
|
+
|
|
92
|
+
const client = new SandboxClient();
|
|
93
|
+
const authConfig = proxyConfig({
|
|
94
|
+
rules: [
|
|
95
|
+
gcpAuth({
|
|
96
|
+
serviceAccountJson: workspaceSecret("SANDBOX_GCP_SERVICE_ACCOUNT_JSON"),
|
|
97
|
+
scopes: ["https://www.googleapis.com/auth/devstorage.read_write"],
|
|
98
|
+
}),
|
|
99
|
+
],
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
const sandbox = await client.createSandbox({
|
|
103
|
+
name: "gcp-sandbox",
|
|
104
|
+
proxyConfig: authConfig,
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
try {
|
|
108
|
+
const result = await sandbox.run("node your-gcp-script.js");
|
|
109
|
+
console.log(result.stdout);
|
|
110
|
+
} finally {
|
|
111
|
+
await sandbox.delete();
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Use `opaqueSecret("...")` for short-lived write-only service account JSON.
|
|
116
|
+
Plaintext service account JSON is not accepted directly.
|
|
117
|
+
|
|
118
|
+
## Sandbox Bucket Mounts
|
|
119
|
+
|
|
120
|
+
When you create a LangSmith sandbox that needs filesystem access to a bucket or
|
|
121
|
+
prefix, pass a `mountConfig` on sandbox creation. Mount specs contain only the
|
|
122
|
+
bucket target. Provider credentials stay in explicit auth config, and the SDK
|
|
123
|
+
expands `mountConfig` into the backend `mounts` and `proxy_config` fields.
|
|
124
|
+
If you also pass `proxyConfig`, its rules are merged with the mount-generated
|
|
125
|
+
proxy auth rules.
|
|
126
|
+
Provider auth for the same provider must appear in only one place.
|
|
127
|
+
|
|
128
|
+
S3 mounts require an enabled AWS auth proxy rule:
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
import {
|
|
132
|
+
awsAuth,
|
|
133
|
+
mountConfig,
|
|
134
|
+
s3Mount,
|
|
135
|
+
workspaceSecret,
|
|
136
|
+
} from "langsmith/sandbox";
|
|
137
|
+
|
|
138
|
+
const mountCfg = mountConfig({
|
|
139
|
+
auth: [
|
|
140
|
+
awsAuth({
|
|
141
|
+
accessKeyId: workspaceSecret("SANDBOX_AWS_ACCESS_KEY_ID"),
|
|
142
|
+
secretAccessKey: workspaceSecret("SANDBOX_AWS_SECRET_ACCESS_KEY"),
|
|
143
|
+
}),
|
|
144
|
+
],
|
|
145
|
+
mounts: [
|
|
146
|
+
s3Mount({
|
|
147
|
+
id: "customer_data",
|
|
148
|
+
mountPath: "/mnt/mounts/customer-data",
|
|
149
|
+
bucket: "example-bucket",
|
|
150
|
+
prefix: "datasets/customer-data",
|
|
151
|
+
region: "us-east-1",
|
|
152
|
+
endpointUrl: "https://s3.amazonaws.com",
|
|
153
|
+
pathStyle: false,
|
|
154
|
+
readOnly: false,
|
|
155
|
+
}),
|
|
156
|
+
],
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
const sandbox = await client.createSandbox({
|
|
160
|
+
name: "s3-mount-sandbox",
|
|
161
|
+
mountConfig: mountCfg,
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
try {
|
|
165
|
+
const result = await sandbox.run("ls /mnt/mounts/customer-data");
|
|
166
|
+
console.log(result.stdout);
|
|
167
|
+
} finally {
|
|
168
|
+
await sandbox.delete();
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
GCS mounts require an enabled GCP auth proxy rule that covers
|
|
173
|
+
`storage.googleapis.com` and `www.googleapis.com`. Read/write mounts require
|
|
174
|
+
`devstorage.read_write` or `cloud-platform`; read-only mounts can also use
|
|
175
|
+
`devstorage.read_only`.
|
|
176
|
+
|
|
177
|
+
```ts
|
|
178
|
+
import {
|
|
179
|
+
gcpAuth,
|
|
180
|
+
gcsMount,
|
|
181
|
+
mountConfig,
|
|
182
|
+
workspaceSecret,
|
|
183
|
+
} from "langsmith/sandbox";
|
|
184
|
+
|
|
185
|
+
const mountCfg = mountConfig({
|
|
186
|
+
auth: [
|
|
187
|
+
gcpAuth({
|
|
188
|
+
serviceAccountJson: workspaceSecret("SANDBOX_GCP_SERVICE_ACCOUNT_JSON"),
|
|
189
|
+
scopes: ["https://www.googleapis.com/auth/devstorage.read_write"],
|
|
190
|
+
}),
|
|
191
|
+
],
|
|
192
|
+
mounts: [
|
|
193
|
+
gcsMount({
|
|
194
|
+
id: "customer_data",
|
|
195
|
+
mountPath: "/mnt/mounts/customer-data",
|
|
196
|
+
bucket: "example-bucket",
|
|
197
|
+
prefix: "datasets/customer-data",
|
|
198
|
+
}),
|
|
199
|
+
],
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
const sandbox = await client.createSandbox({
|
|
203
|
+
name: "gcs-mount-sandbox",
|
|
204
|
+
mountConfig: mountCfg,
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
try {
|
|
208
|
+
const result = await sandbox.run("ls /mnt/mounts/customer-data");
|
|
209
|
+
console.log(result.stdout);
|
|
210
|
+
} finally {
|
|
211
|
+
await sandbox.delete();
|
|
212
|
+
}
|
|
213
|
+
```
|
|
68
214
|
|
|
69
215
|
## 1. Connect to LangSmith
|
|
70
216
|
|