SDK
Dropstone சர்வருடன் தொடர்புகொள்ள வகை-பாதுகாப்பான JS கிளையன்ட்.
Dropstone JS/TS SDK ஆனது உள்ளூர் Dropstone ஏஜென்டுடன் தொடர்புகொள்ள வகை-பாதுகாப்பான கிளையன்ட்டை வழங்குகிறது. இது dropstone serve ஐ ஒரு துணை செயல்முறையாக தொடங்குகிறது மற்றும் அதை சுட்டிக்காட்டும் ஒரு வகை HTTP கிளையன்ட்டை உங்களுக்கு வழங்குகிறது.
CI இல் தலையற்ற API அணுகல் தேவையா?:
தூய நிரல்பு பயன்பாட்டிற்கு (CI பைப்லைன்கள், தன்னியக்கமாக்கல், சர்வலெஸ்), DROPSTONE_API_KEY உடன் HTTP API ஐ விரும்பவும். இந்தப் பக்கத்தில் உள்ள SDK என்பது CLI பைனரி நிறுவப்பட்ட Node செயல்முறையில் ஊடாடும் ஏஜென்ட்டை உட்பொதிக்க உள்ளது.
அடிப்படை HTTP API எவ்வாறு செயல்படுகிறது என்பதற்கு சர்வர் பக்கத்தைப் பார்க்கவும்.
நிறுவல்
npm இலிருந்து SDK ஐ நிறுவவும்:
npm install @blankline/dropstone-sdk
கிளையன்ட் உருவாக்கவும்
Dropstone இன் ஒரு நிகழ்வை உருவாக்கவும்:
import { createDropstone } from "@blankline/dropstone-sdk"
const { client } = await createDropstone()
இது சர்வர் மற்றும் கிளையன்ட் இரண்டையும் தொடங்குகிறது
விருப்பங்கள்
| விருப்பம் | வகை | விளக்கம் | இயல்புநிலை |
|---|---|---|---|
hostname | string | சர்வர் ஹோஸ்ட்நேம் | 127.0.0.1 |
port | number | சர்வர் போர்ட் | 4096 |
signal | AbortSignal | ரத்துசெய்ய AbortSignal | undefined |
timeout | number | சர்வர் தொடக்கத்திற்கான ms இல் நேரம் வரம்பு | 5000 |
config | Config | உள்ளமைவு பொருள் | {} |
உள்ளமைவு
நடத்தையை தனிப்பயனாக்க உள்ளமைவு பொருளை நீங்கள் கடந்து செல்லலாம். நிகழ்வு இன்னும் உங்கள் dropstone.json ஐ எடுத்துக்கொள்கிறது, ஆனால் நீங்கள் உள்ளமைவை மேலெழுதலாம் அல்லது சேர்க்கலாம்:
import { createDropstone } from "@blankline/dropstone-sdk"
const dropstone = await createDropstone({
hostname: "127.0.0.1",
port: 4096,
config: {
model: "dropstone/dropstone-pro",
},
})
console.log(`Server running at ${dropstone.server.url}`)
dropstone.server.close()
கிளையன்ட் மட்டுமே
உங்களிடம் ஏற்கனவே Dropstone இன் இயங்கும் நிகழ்வு இருந்தால், அதுடன் இணைக்க கிளையன்ட் நிகழ்வை உருவாக்கலாம்:
import { createDropstoneClient } from "@blankline/dropstone-sdk"
const client = createDropstoneClient({
baseUrl: "http://localhost:4096",
})
விருப்பங்கள்
| விருப்பம் | வகை | விளக்கம் | இயல்புநிலை |
|---|---|---|---|
baseUrl | string | சர்வரின் URL | http://localhost:4096 |
fetch | function | தனிப்பயன் fetch செயல்படுத்தல் | globalThis.fetch |
parseAs | string | பதிலை பாகுபடுத்தும் முறை | auto |
responseStyle | string | திரும்பவும் பாணி: data அல்லது fields | fields |
throwOnError | boolean | பிழைகளை திரும்பவும் பதிலாக வீசவும் | false |
வகைகள்
SDK ஆனது அனைத்து API வகைகளுக்கான TypeScript வரையறைகளை உள்ளடக்கியுள்ளது. அவற்றை நேரடியாக இறக்குமதி செய்யவும்:
import type { Session, Message, Part } from "@blankline/dropstone-sdk"
அனைத்து வகைகளும் சர்வரின் OpenAPI விவரக்குறிப்பிலிருந்து உருவாக்கப்பட்டுள்ளன, எனவே TypeScript இல் நீங்கள் பார்க்கும் பெயர்கள் சர்வர் கோரிக்கை மற்றும் பதிலளிக்கும் வடிவங்களுக்கு ஒன்றுக்கு ஒன்று வரைபடமாக்குகின்றன.
பிழைகள்
SDK பிழைகளை வீசக்கூடும் என்பதை நீங்கள் பிடித்து கையாளலாம்:
try {
await client.session.get({ path: { id: "invalid-id" } })
} catch (error) {
console.error("Failed to get session:", (error as Error).message)
}
கட்டமைக்கப்பட்ட வெளியீடு
JSON ஸ்கீமாவுடன் format ஐ குறிப்பிடுவதன் மூலம் மாதிரியிலிருந்து கட்டமைக்கப்பட்ட JSON வெளியீட்டைக் கோரலாம். மாதிரி உங்கள் ஸ்கீமாவுடன் பொருந்தும் சரிபார்க்கப்பட்ட JSON ஐ திரும்பக் கொடுக்க StructuredOutput கருவியைப் பயன்படுத்தும்.
அடிப்படை பயன்பாடு
const result = await client.session.prompt({
path: { id: sessionId },
body: {
parts: [{ type: "text", text: "Research Dropstone and provide company info" }],
format: {
type: "json_schema",
schema: {
type: "object",
properties: {
company: { type: "string", description: "Company name" },
founded: { type: "number", description: "Year founded" },
products: {
type: "array",
items: { type: "string" },
description: "Main products",
},
},
required: ["company", "founded"],
},
},
},
})
// கட்டமைக்கப்பட்ட வெளியீட்டை அணுகவும்
console.log(result.data.info.structured_output)
// { company: "Dropstone", founded: 2024, products: ["Dropstone CLI"] }
வெளியீட்டு வடிவ வகைகள்
| வகை | விளக்கம் |
|---|---|
text | இயல்புநிலை. நிலையான உரை பதிலளிப்பு (கட்டமைக்கப்பட்ட வெளியீடு இல்லை) |
json_schema | வழங்கப்பட்ட ஸ்கீமாவுடன் பொருந்தும் சரிபார்க்கப்பட்ட JSON ஐ திரும்பக் கொடுக்கிறது |
JSON ஸ்கீமா வடிவம்
type: 'json_schema' ஐ பயன்படுத்தும் போது, வழங்கவும்:
| புலம் | வகை | விளக்கம் |
|---|---|---|
type | 'json_schema' | தேவை. JSON ஸ்கீமா பயன்முறையை குறிப்பிடுகிறது |
schema | object | தேவை. வெளியீட்டு கட்டமைப்பை வரையறுக்கும் JSON ஸ்கீமா பொருள் |
retryCount | number | விருப்பம். சரிபார்ப்பு மறுயத்தனைகளின் எண்ணிக்கை (இயல்புநிலை: 2) |
பிழை கையாளுதல்
மாதிரி அனைத்து மறுயத்தனைகளுக்குப் பிறகு செல்லுபடியாகும் கட்டமைக்கப்பட்ட வெளியீட்டை உருவாக்க தவறினால், பதிலளிப்பு StructuredOutputError ஐ உள்ளடக்கும்:
if (result.data.info.error?.name === "StructuredOutputError") {
console.error("Failed to produce structured output:", result.data.info.error.message)
console.error("Attempts:", result.data.info.error.retries)
}
சிறந்த நடைமுறைகள்
- தெளிவான விளக்கங்களை வழங்கவும் உங்கள் ஸ்கீமா பண்புகளில் மாதிரி என்ன தரவை பிரித்தெடுக்க வேண்டும் என்பதைப் புரிந்துகொள்ள உதவ
requiredஐ பயன்படுத்தவும் எந்த புலங்கள் இருக்க வேண்டும் என்பதை குறிப்பிட- ஸ்கீமாக்களை கவனம் செலுத்தவும் - சிக்கலான உள்ளமைக்கப்பட்ட ஸ்கீமாக்கள் மாதிரிக்கு சரியாக நிரப்ப கடினமாக இருக்கலாம்
- பொருத்தமான
retryCountஐ அமைக்கவும் - சிக்கலான ஸ்கீமாக்களுக்கு அதிகரிக்கவும், எளிய ஸ்கீமாக்களுக்கு குறைக்கவும்
API கள்
SDK ஆனது வகை-பாதுகாப்பான கிளையன்ட்டின் மூலம் அனைத்து சர்வர் API களை வெளிப்படுத்துகிறது.
உலகளாவிய
| முறை | விளக்கம் | பதிலளிப்பு |
|---|---|---|
global.health() | சர்வர் ஆரோக்கியம் மற்றும் பதிப்பை சரிபார்க்கவும் | { healthy: true, version: string } |
எடுத்துக்காட்டுகள்
const health = await client.global.health()
console.log(health.data.version)
பயன்பாடு
| முறை | விளக்கம் | பதிலளிப்பு |
|---|---|---|
app.log() | பதிவு உள்ளீட்டை எழுதவும் | boolean |
app.agents() | அனைத்து கிடைக்கும் ஏஜென்ட்களை பட்டியலிடவும் | Agent[] |
எடுத்துக்காட்டுகள்
// பதிவு உள்ளீட்டை எழுதவும்
await client.app.log({
body: {
service: "my-app",
level: "info",
message: "Operation completed",
},
})
// கிடைக்கும் ஏஜென்ட்களை பட்டியலிடவும்
const agents = await client.app.agents()
திட்டம்
| முறை | விளக்கம் | பதிலளிப்பு |
|---|---|---|
project.list() | அனைத்து திட்டங்களை பட்டியலிடவும் | Project[] |
project.current() | தற்போதைய திட்டத்தைப் பெறவும் | Project |
எடுத்துக்காட்டுகள்
// அனைத்து திட்டங்களை பட்டியலிடவும்
const projects = await client.project.list()
// தற்போதைய திட்டத்தைப் பெறவும்
const currentProject = await client.project.current()
பாதை
| முறை | விளக்கம் | பதிலளிப்பு |
|---|---|---|
path.get() | தற்போதைய பாதையைப் பெறவும் | Path |
எடுத்துக்காட்டுகள்
// தற்போதைய பாதை தகவலைப் பெறவும்
const pathInfo = await client.path.get()
உள்ளமைவு
| முறை | விளக்கம் | பதிலளிப்பு |
|---|---|---|
config.get() | உள்ளமைவு தகவலைப் பெறவும் | Config |
எடுத்துக்காட்டுகள்
const config = await client.config.get()
அமர்வுகள்
| முறை | விளக்கம் | குறிப்புகள் |
|---|---|---|
session.list() | அமர்வுகளை பட்டியலிடவும் | Session[] ஐ திரும்பக் கொடுக்கிறது |
session.get({ path }) | அமர்வைப் பெறவும் | Session ஐ திரும்பக் கொடுக்கிறது |
session.children({ path }) | குழந்தை அமர்வுகளை பட்டியலிடவும் | Session[] ஐ திரும்பக் கொடுக்கிறது |
session.create({ body }) | அமர்வை உருவாக்கவும் | Session ஐ திரும்பக் கொடுக்கிறது |
session.delete({ path }) | அமர்வை நீக்கவும் | boolean ஐ திரும்பக் கொடுக்கிறது |
session.update({ path, body }) | அமர்வு பண்புகளை புதுப்பிக்கவும் | Session ஐ திரும்பக் கொடுக்கிறது |
session.init({ path, body }) | பயன்பாட்டை பகுப்பாய்வு செய்து AGENTS.md ஐ உருவாக்கவும் | boolean ஐ திரும்பக் கொடுக்கிறது |
session.abort({ path }) | இயங்கும் அமர்வை நிறுத்தவும் | boolean ஐ திரும்பக் கொடுக்கிறது |
session.summarize({ path, body }) | அமர்வை சுருக்கவும் | boolean ஐ திரும்பக் கொடுக்கிறது |
session.messages({ path }) | அமர்வில் செய்திகளை பட்டியலிடவும் | { info: Message, parts: Part[]}[] ஐ திரும்பக் கொடுக்கிறது |
session.message({ path }) | செய்தி விவரங்களைப் பெறவும் | { info: Message, parts: Part[]} ஐ திரும்பக் கொடுக்கிறது |
session.prompt({ path, body }) | உரைவினா செய்தியை அனுப்பவும் | body.noReply: true UserMessage ஐ திரும்பக் கொடுக்கிறது (சூழல் மட்டுமே). இயல்புநிலை AssistantMessage ஐ AI பதிலளிப்புடன் திரும்பக் கொடுக்கிறது. கட்டமைக்கப்பட்ட வெளியீடு க்கு body.outputFormat ஐ ஆதரிக்கிறது |
session.command({ path, body }) | அமர்வுக்கு கட்டளையை அனுப்பவும் | { info: AssistantMessage, parts: Part[]} ஐ திரும்பக் கொடுக்கிறது |
session.shell({ path, body }) | ஷெல் கட்டளையை இயக்கவும் | AssistantMessage ஐ திரும்பக் கொடுக்கிறது |
session.revert({ path, body }) | செய்தியை மீளமைக்கவும் | Session ஐ திரும்பக் கொடுக்கிறது |
session.unrevert({ path }) | மீளமைக்கப்பட்ட செய்திகளை மீட்டெடுக்கவும் | Session ஐ திரும்பக் கொடுக்கிறது |
postSessionByIdPermissionsByPermissionId({ path, body }) | அனுமதி கோரிக்கைக்கு பதிலளிக்கவும் | boolean ஐ திரும்பக் கொடுக்கிறது |
எடுத்துக்காட்டுகள்
// அமர்வுகளை உருவாக்கி நிர்வகிக்கவும்
const session = await client.session.create({
body: { title: "My session" },
})
const sessions = await client.session.list()
// உரைவினா செய்தியை அனுப்பவும்
const result = await client.session.prompt({
path: { id: session.id },
body: {
model: { providerID: "dropstone", modelID: "dropstone-pro" },
parts: [{ type: "text", text: "Hello!" }],
},
})
// AI பதிலளிப்பைத் தூண்டாமல் சூழலை செலுத்தவும் (செருகுநிரல்களுக்கு பயனுள்ளது)
await client.session.prompt({
path: { id: session.id },
body: {
noReply: true,
parts: [{ type: "text", text: "You are a helpful assistant." }],
},
})
கோப்புகள்
| முறை | விளக்கம் | பதிலளிப்பு |
|---|---|---|
find.text({ query }) | கோப்புகளில் உரையைத் தேடவும் | path, lines, line_number, absolute_offset, submatches உடன் பொருத்தம் பொருள்களின் வரிசை |
find.files({ query }) | பெயரால் கோப்புகள் மற்றும் கோப்பகங்களைக் கண்டுபிடிக்கவும் | string[] (பாதைகள்) |
find.symbols({ query }) | பணிப்பெயர் சின்னங்களைக் கண்டுபிடிக்கவும் | Symbol[] |
file.read({ query }) | கோப்பைப் படிக்கவும் | { type: "raw" | "patch", content: string } |
file.status({ query? }) | ট்র্যாக் செய்யப்பட்ட கோப்புகளுக்கான நிலையைப் பெறவும் | File[] |
find.files சில விருப்ப கோரிக்கை புலங்களை ஆதரிக்கிறது:
type:"file"அல்லது"directory"directory: தேடலுக்கான திட்ட வேரை மேலெழுதவும்limit: அதிகபட்ச முடிவுகள் (1–200)
எடுத்துக்காட்டுகள்
// கோப்புகளைத் தேடி படிக்கவும்
const textResults = await client.find.text({
query: { pattern: "function.*dropstone" },
})
const files = await client.find.files({
query: { query: "*.ts", type: "file" },
})
const directories = await client.find.files({
query: { query: "packages", type: "directory", limit: 20 },
})
const content = await client.file.read({
query: { path: "src/index.ts" },
})
அங்கீகாரம்
| முறை | விளக்கம் | பதிலளிப்பு |
|---|---|---|
auth.set({ ... }) | அங்கீகார நற்சான்றுகளை அமைக்கவும் | boolean |
எடுத்துக்காட்டுகள்
await client.auth.set({
path: { id: "dropstone" },
body: { type: "api", key: "your-dropstone-api-key" },
})
நிகழ்வுகள்
| முறை | விளக்கம் | பதிலளிப்பு |
|---|---|---|
event.subscribe() | சர்வர்-அனுப்பிய நிகழ்வுகள் ஸ்ட்ரீம் | சர்வர்-அனுப்பிய நிகழ்வுகள் ஸ்ட்ரீம் |
எடுத்துக்காட்டுகள்
// நிஜ-நேர நிகழ்வுகளைக் கேளுங்கள்
const events = await client.event.subscribe()
for await (const event of events.stream) {
console.log("Event:", event.type, event.properties)
}