doc: improve/fix DatasetExample

This commit is contained in:
Quentin Brosse
2025-11-11 15:35:17 +01:00
committed by stainless-app[bot]
parent ddd1ac02f2
commit 8afffa6275
2 changed files with 64 additions and 21 deletions
+12 -2
View File
@@ -1,6 +1,7 @@
plugins {
id("langchain.java")
application
kotlin("jvm")
id("org.springframework.boot") version "2.7.18" apply false
}
@@ -10,7 +11,8 @@ repositories {
dependencies {
implementation(project(":langsmith-java"))
implementation(kotlin("stdlib"))
// Spring Boot dependencies (optional - only needed for Spring Boot example)
implementation(platform("org.springframework.boot:spring-boot-dependencies:2.7.18"))
implementation("org.springframework.boot:spring-boot-starter-web")
@@ -22,13 +24,21 @@ tasks.withType<JavaCompile>().configureEach {
options.release.set(9)
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
compilerOptions {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_9)
}
}
application {
// Use `./gradlew :langsmith-java-example:run` to run `Main`
// Use `./gradlew :langsmith-java-example:run -Pexample=Something` to run `SomethingExample`
mainClass = "com.langchain.smith.example.${
if (project.hasProperty("example")) {
val exampleName = project.property("example") as String
if (exampleName.endsWith("Example")) exampleName else "${exampleName}Example"
val baseName = if (exampleName.endsWith("Example")) exampleName else "${exampleName}Example"
// Kotlin files need "Kt" suffix for their main function
"${baseName}Kt"
} else {
"Main"
}
@@ -7,6 +7,7 @@ import com.langchain.smith.models.datasets.Dataset
import com.langchain.smith.models.datasets.DatasetCreateParams
import com.langchain.smith.models.datasets.DatasetListParams
import com.langchain.smith.models.examples.ExampleCreateParams
import com.langchain.smith.models.examples.bulk.BulkCreateParams
/**
* Demonstrates how to create a dataset and add examples to it programmatically.
@@ -38,6 +39,21 @@ fun getDatasetUrl(dataset: Dataset): String {
return "$hostUrl/o/${dataset.tenantId()}/datasets/${dataset.id()}"
}
/**
* Deletes a dataset after user confirmation.
*/
fun deleteDatasetWithConfirmation(client: LangsmithClient, dataset: Dataset) {
println("\nPress Enter to delete the dataset using client.datasets().delete()...")
try {
readln()
} catch (e: Exception) {
// If stdin is not available (e.g., running in CI), skip confirmation
println(" (Skipping confirmation - stdin not available)")
}
client.datasets().delete(dataset.id())
println(" ✓ Deleted dataset: ${dataset.name()} (ID: ${dataset.id()})")
}
fun main() {
// Configure client from environment variables
// Requires: LANGSMITH_API_KEY and LANGCHAIN_BASE_URL
@@ -56,9 +72,10 @@ fun main() {
val existing = existingDatasets[0]
System.err.println("Error: Dataset with name '$datasetName' already exists")
System.err.println("View existing dataset: ${getDatasetUrl(existing)}")
return
deleteDatasetWithConfirmation(client, existing)
} else {
println(" ✓ No existing dataset found with name '$datasetName'\n")
}
println(" ✓ No existing dataset found with name '$datasetName'\n")
// 2. Create a new dataset
println("2. Creating dataset using client.datasets().create()...")
@@ -74,36 +91,52 @@ fun main() {
// Example 1: Mount Kilimanjaro
val example1Params = ExampleCreateParams.builder()
.putAdditionalBodyProperty("dataset_id", JsonValue.from(dataset.id()))
.putAdditionalBodyProperty("inputs", JsonValue.from(
mapOf("question" to "Which country is Mount Kilimanjaro located in?")))
.putAdditionalBodyProperty("outputs", JsonValue.from(
mapOf("answer" to "Mount Kilimanjaro is located in Tanzania.")))
.datasetId(dataset.id())
.inputs(JsonValue.from(mapOf("question" to "Which country is Mount Kilimanjaro located in?")))
.outputs(JsonValue.from(mapOf("answer" to "Mount Kilimanjaro is located in Tanzania.")))
.build()
val example1 = client.examples().create(example1Params)
println(" ✓ Created example 1: ${example1.id()}")
// Example 2: Earth's lowest point
val example2Params = ExampleCreateParams.builder()
.putAdditionalBodyProperty("dataset_id", JsonValue.from(dataset.id()))
.putAdditionalBodyProperty("inputs", JsonValue.from(
mapOf("question" to "What is Earth's lowest point?")))
.putAdditionalBodyProperty("outputs", JsonValue.from(
mapOf("answer" to "Earth's lowest point is The Dead Sea.")))
.datasetId(dataset.id())
.inputs(JsonValue.from(mapOf("question" to "What is Earth's lowest point?")))
.outputs(JsonValue.from(mapOf("answer" to "Earth's lowest point is The Dead Sea.")))
.build()
val example2 = client.examples().create(example2Params)
println(" ✓ Created example 2: ${example2.id()}\n")
// 4. Retrieve the dataset and show the number of examples
println("4. Retrieving dataset using client.datasets().retrieve()...")
// 4. Add more examples using bulk create
println("4. Adding examples using client.examples().bulk().create()...")
val bulkExamples = client.examples().bulk().create(
BulkCreateParams.builder()
.addBody(
BulkCreateParams.Body.builder()
.datasetId(dataset.id())
.inputs(JsonValue.from(mapOf("question" to "What is the capital of France?")))
.outputs(JsonValue.from(mapOf("answer" to "The capital of France is Paris.")))
.build()
)
.addBody(
BulkCreateParams.Body.builder()
.datasetId(dataset.id())
.inputs(JsonValue.from(mapOf("question" to "Which ocean is the largest?")))
.outputs(JsonValue.from(mapOf("answer" to "The Pacific Ocean is the largest.")))
.build()
)
.build()
)
println(" ✓ Created ${bulkExamples.size} examples in bulk\n")
// 5. Retrieve the dataset and show the number of examples
println("5. Retrieving dataset using client.datasets().retrieve()...")
val retrievedDataset = client.datasets().retrieve(dataset.id())
println(" ✓ Retrieved dataset: ${retrievedDataset.name()}")
println(" ✓ Number of examples: ${retrievedDataset.exampleCount()}")
println(" ✓ View dataset: ${getDatasetUrl(retrievedDataset)}")
// 5. Delete the dataset
println("\n5. Press Enter to delete the dataset using client.datasets().delete()...")
readln()
client.datasets().delete(dataset.id())
println(" ✓ Deleted dataset: ${dataset.name()} (ID: ${dataset.id()})")
// 6. Delete the dataset
println("\n6. Deleting the dataset...")
deleteDatasetWithConfirmation(client, dataset)
}