Dropstone Docs

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()

இது சர்வர் மற்றும் கிளையன்ட் இரண்டையும் தொடங்குகிறது

விருப்பங்கள்

விருப்பம்வகைவிளக்கம்இயல்புநிலை
hostnamestringசர்வர் ஹோஸ்ட்நேம்127.0.0.1
portnumberசர்வர் போர்ட்4096
signalAbortSignalரத்துசெய்ய AbortSignalundefined
timeoutnumberசர்வர் தொடக்கத்திற்கான ms இல் நேரம் வரம்பு5000
configConfigஉள்ளமைவு பொருள்{}

உள்ளமைவு

நடத்தையை தனிப்பயனாக்க உள்ளமைவு பொருளை நீங்கள் கடந்து செல்லலாம். நிகழ்வு இன்னும் உங்கள் 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",
})

விருப்பங்கள்

விருப்பம்வகைவிளக்கம்இயல்புநிலை
baseUrlstringசர்வரின் URLhttp://localhost:4096
fetchfunctionதனிப்பயன் fetch செயல்படுத்தல்globalThis.fetch
parseAsstringபதிலை பாகுபடுத்தும் முறைauto
responseStylestringதிரும்பவும் பாணி: data அல்லது fieldsfields
throwOnErrorbooleanபிழைகளை திரும்பவும் பதிலாக வீசவும்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 ஸ்கீமா பயன்முறையை குறிப்பிடுகிறது
schemaobjectதேவை. வெளியீட்டு கட்டமைப்பை வரையறுக்கும் JSON ஸ்கீமா பொருள்
retryCountnumberவிருப்பம். சரிபார்ப்பு மறுயத்தனைகளின் எண்ணிக்கை (இயல்புநிலை: 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)
}

சிறந்த நடைமுறைகள்

  1. தெளிவான விளக்கங்களை வழங்கவும் உங்கள் ஸ்கீமா பண்புகளில் மாதிரி என்ன தரவை பிரித்தெடுக்க வேண்டும் என்பதைப் புரிந்துகொள்ள உதவ
  2. required ஐ பயன்படுத்தவும் எந்த புலங்கள் இருக்க வேண்டும் என்பதை குறிப்பிட
  3. ஸ்கீமாக்களை கவனம் செலுத்தவும் - சிக்கலான உள்ளமைக்கப்பட்ட ஸ்கீமாக்கள் மாதிரிக்கு சரியாக நிரப்ப கடினமாக இருக்கலாம்
  4. பொருத்தமான 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)
}
Ctrl+I