mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 16:36:21 +02:00
480 lines
15 KiB
Markdown
480 lines
15 KiB
Markdown
|
|
---
|
||
|
|
layout: default
|
||
|
|
title: "Huduma za Zana: Zana za Wakala Zinazoweza Kuunganishwa Kwenye Mfumo"
|
||
|
|
parent: "Swahili (Beta)"
|
||
|
|
---
|
||
|
|
|
||
|
|
# Huduma za Zana: Zana za Wakala Zinazoweza Kuunganishwa Kwenye Mfumo
|
||
|
|
|
||
|
|
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
|
||
|
|
|
||
|
|
## Hali
|
||
|
|
|
||
|
|
Imetekelezwa
|
||
|
|
|
||
|
|
## Muhtasari
|
||
|
|
|
||
|
|
Maelezo haya yanafafanua mfumo wa zana za wakala ambazo zinaweza kuunganishwa kwenye mfumo, zinazojulikana kama "huduma za zana". Tofauti na aina za zana zilizojumuishwa awali (`KnowledgeQueryImpl`, `McpToolImpl`, n.k.), huduma za zana huruhusu zana mpya kuletwa kwa:
|
||
|
|
|
||
|
|
1. Kuanzisha huduma mpya iliyojengwa kwenye Pulsar
|
||
|
|
2. Kuongeza maelezo ya usanidi ambayo huambia wakala jinsi ya kuiita
|
||
|
|
|
||
|
|
Hii inaruhusu uboreshaji bila kubadilisha mfumo msingi wa wakala.
|
||
|
|
|
||
|
|
## Dhana
|
||
|
|
|
||
|
|
| Neno | Ufafanuzi |
|
||
|
|
|------|------------|
|
||
|
|
| **Zana Iliyojumuishwa** | Aina za zana zilizopo zilizo na matumizi yaliyopangwa mapema katika `tools.py` |
|
||
|
|
| **Huduma ya Zana** | Huduma ya Pulsar ambayo inaweza kuita kama zana ya wakala, iliyoainishwa na maelezo ya huduma |
|
||
|
|
| **Zana** | Toleo lililosanidiwa ambalo linarejelea huduma ya zana, lililowezeshwa kwa wakala/LLM |
|
||
|
|
|
||
|
|
Hii ni mfumo wa tabaka mbili, sawa na zana za MCP:
|
||
|
|
MCP: Seva ya MCP inaainisha kiolesura cha zana → Usanidi wa zana huirejelea
|
||
|
|
Huduma za Zana: Huduma ya zana inaainisha kiolesura cha Pulsar → Usanidi wa zana huirejelea
|
||
|
|
|
||
|
|
## Asili: Zana Zilizopo
|
||
|
|
|
||
|
|
### Utendaji wa Zana Iliyojumuishwa
|
||
|
|
|
||
|
|
Zana kwa sasa zinafafanuliwa katika `trustgraph-flow/trustgraph/agent/react/tools.py` na matumizi yaliyopangwa:
|
||
|
|
|
||
|
|
```python
|
||
|
|
class KnowledgeQueryImpl:
|
||
|
|
async def invoke(self, question):
|
||
|
|
client = self.context("graph-rag-request")
|
||
|
|
return await client.rag(question, self.collection)
|
||
|
|
```
|
||
|
|
|
||
|
|
Kila aina ya zana:
|
||
|
|
Ina huduma ya Pulsar iliyopangwa tayari ambayo inaitumia (k.m., `graph-rag-request`)
|
||
|
|
Inajua njia sahihi ya kuita kwenye mteja (k.m., `client.rag()`)
|
||
|
|
Ina vigezo vilivyopangwa ambavyo vimefafuliwa katika utekelezaji
|
||
|
|
|
||
|
|
### Usajili wa Zana (service.py:105-214)
|
||
|
|
|
||
|
|
Zana huzamilishwa kutoka kwa usanidi na sehemu ya `type` ambayo inaelekeza kwenye utekelezaji:
|
||
|
|
|
||
|
|
```python
|
||
|
|
if impl_id == "knowledge-query":
|
||
|
|
impl = functools.partial(KnowledgeQueryImpl, collection=data.get("collection"))
|
||
|
|
elif impl_id == "text-completion":
|
||
|
|
impl = TextCompletionImpl
|
||
|
|
# ... etc
|
||
|
|
```
|
||
|
|
|
||
|
|
## Usanifu
|
||
|
|
|
||
|
|
### Mfumo wa Tabaka Mbili
|
||
|
|
|
||
|
|
#### Tabaka la 1: Kisajili cha Huduma ya Zana
|
||
|
|
|
||
|
|
Huduma ya zana inaelezea kiolesura cha huduma ya Pulsar. Inaangazia:
|
||
|
|
Mizinga ya Pulsar kwa ombi/jibu
|
||
|
|
Vigezo vya usanidi ambavyo vinahitajika na zana zinazotumia huduma hiyo
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"id": "custom-rag",
|
||
|
|
"request-queue": "non-persistent://tg/request/custom-rag",
|
||
|
|
"response-queue": "non-persistent://tg/response/custom-rag",
|
||
|
|
"config-params": [
|
||
|
|
{"name": "collection", "required": true}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Huduma ya zana ambayo haihitaji vigezo vya usanidi:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"id": "calculator",
|
||
|
|
"request-queue": "non-persistent://tg/request/calc",
|
||
|
|
"response-queue": "non-persistent://tg/response/calc",
|
||
|
|
"config-params": []
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Kategoria ya 2: Kisajili cha Zana
|
||
|
|
|
||
|
|
Zana inarejelea huduma ya zana na hutoa:
|
||
|
|
Maelezo ya vigezo ya usanidi (yakinayo na mahitaji ya huduma)
|
||
|
|
Meta-data ya zana kwa wakala (jina, maelezo)
|
||
|
|
Ufafanuzi wa hoja kwa mfumo wa lugha (LLM)
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "tool-service",
|
||
|
|
"name": "query-customers",
|
||
|
|
"description": "Query the customer knowledge base",
|
||
|
|
"service": "custom-rag",
|
||
|
|
"collection": "customers",
|
||
|
|
"arguments": [
|
||
|
|
{
|
||
|
|
"name": "question",
|
||
|
|
"type": "string",
|
||
|
|
"description": "The question to ask about customers"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Zana nyingi zinaweza kurejelea huduma moja kwa usanidi tofauti:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "tool-service",
|
||
|
|
"name": "query-products",
|
||
|
|
"description": "Query the product knowledge base",
|
||
|
|
"service": "custom-rag",
|
||
|
|
"collection": "products",
|
||
|
|
"arguments": [
|
||
|
|
{
|
||
|
|
"name": "question",
|
||
|
|
"type": "string",
|
||
|
|
"description": "The question to ask about products"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Muundo wa Ombi
|
||
|
|
|
||
|
|
Wakati zana inaitwa, ombi kwa huduma ya zana linajumuisha:
|
||
|
|
`user`: Kutoka ombi la wakala (utumiaji wa pamoja)
|
||
|
|
`config`: Maelezo ya usanidi yaliyokandwa katika umbizo la JSON kutoka kwa maelezo ya zana
|
||
|
|
`arguments`: Majadilisho yaliyokandwa katika umbizo la JSON kutoka kwa mfumo wa lugha kubwa (LLM)
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"user": "alice",
|
||
|
|
"config": "{\"collection\": \"customers\"}",
|
||
|
|
"arguments": "{\"question\": \"What are the top customer complaints?\"}"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Huduma ya zana hupokea haya kama dictionaries yaliyochanganishwa katika njia ya `invoke`.
|
||
|
|
|
||
|
|
### Utendakazi wa Huduma ya Zana ya Jumla
|
||
|
|
|
||
|
|
Darasa la `ToolServiceImpl` huita huduma za zana kulingana na usanidi:
|
||
|
|
|
||
|
|
```python
|
||
|
|
class ToolServiceImpl:
|
||
|
|
def __init__(self, context, request_queue, response_queue, config_values, arguments, processor):
|
||
|
|
self.request_queue = request_queue
|
||
|
|
self.response_queue = response_queue
|
||
|
|
self.config_values = config_values # e.g., {"collection": "customers"}
|
||
|
|
# ...
|
||
|
|
|
||
|
|
async def invoke(self, **arguments):
|
||
|
|
client = await self._get_or_create_client()
|
||
|
|
response = await client.call(user, self.config_values, arguments)
|
||
|
|
if isinstance(response, str):
|
||
|
|
return response
|
||
|
|
else:
|
||
|
|
return json.dumps(response)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Maamuzi ya Ubunifu
|
||
|
|
|
||
|
|
### Mfumo wa Uwekaji wa Tabaka Mbili
|
||
|
|
|
||
|
|
Huduma za zana zinafuata mfumo wa tabaka mbili, sawa na zana za MCP:
|
||
|
|
|
||
|
|
1. **Huduma ya Zana**: Inaelezea kiolesura cha huduma ya Pulsar (mada, vigezo muhimu vya usanidi)
|
||
|
|
2. **Zana**: Inarejelea huduma ya zana, hutoa maadili ya usanidi, inaelezea hoja za LLM
|
||
|
|
|
||
|
|
Tofauti hii inaruhusu:
|
||
|
|
Huduma moja ya zana kutumika na zana nyingi zenye usanidi tofauti
|
||
|
|
Tofauti wazi kati ya kiolesura cha huduma na usanidi wa zana
|
||
|
|
Ujuzi wa matumizi wa maelezo ya huduma
|
||
|
|
|
||
|
|
### Ramani ya Ombi: Kupitisha na Kifurushi
|
||
|
|
|
||
|
|
Ombi kwa huduma ya zana ni kifurushi kilicho na muundo, kinachojumuisha:
|
||
|
|
`user`: Inasambazwa kutoka ombi la wakala kwa ajili ya utumiaji wa pamoja
|
||
|
|
Maadili ya usanidi: Kutoka kwa maelezo ya zana (k.m., `collection`)
|
||
|
|
`arguments`: Hoja zilizotolewa na LLM, zinazopitishwa kama kamusi
|
||
|
|
|
||
|
|
Kidhibiti cha wakala huchanganua jibu la LLM kuwa `act.arguments` kama kamusi (`agent_manager.py:117-154`). Kamusi hii inajumuishwa katika kifurushi cha ombi.
|
||
|
|
|
||
|
|
### Usimamizi wa Mpango: Bila Aina
|
||
|
|
|
||
|
|
Maombi na majibu hutumia kamusi zisizo na aina. Hakuna uthibitishaji wa mpango katika ngazi ya wakala - huduma ya zana inawajibika kwa uthibitishaji wa pembejeo zake. Hii hutoa uwezo mkubwa wa kufafanua huduma mpya.
|
||
|
|
|
||
|
|
### Kiolesura cha Mteja: Mada za Moja kwa Moja za Pulsar
|
||
|
|
|
||
|
|
Huduma za zana hutumia mada za moja kwa moja za Pulsar bila kuhitaji usanidi wa mtiririko. Maelezo ya huduma-ya-zana yanaelezea majina kamili ya folyo:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"id": "joke-service",
|
||
|
|
"request-queue": "non-persistent://tg/request/joke",
|
||
|
|
"response-queue": "non-persistent://tg/response/joke",
|
||
|
|
"config-params": [...]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Hii inaruhusu huduma kuwa zimepakwa kwenye nafasi yoyote.
|
||
|
|
|
||
|
|
### Usimamizi wa Makosa: Mfumo wa Makosa wa Kawaida
|
||
|
|
|
||
|
|
Majibu ya huduma ya zana yanafuata mfumo wa sasa wa muundo na sehemu ya `error`:
|
||
|
|
|
||
|
|
```python
|
||
|
|
@dataclass
|
||
|
|
class Error:
|
||
|
|
type: str = ""
|
||
|
|
message: str = ""
|
||
|
|
```
|
||
|
|
|
||
|
|
Muundo wa majibu:
|
||
|
|
Mafanikio: `error` ni `None`, majibu yana matokeo
|
||
|
|
Kosa: `error` imejaa na `type` na `message`
|
||
|
|
|
||
|
|
Hii inafanana na muundo uliotumika katika huduma zingine (e.g., `PromptResponse`, `QueryResponse`, `AgentResponse`).
|
||
|
|
|
||
|
|
### Uhusiano wa Ombi/Jibu
|
||
|
|
|
||
|
|
Maombi na majibu yanahusishwa kwa kutumia `id` katika vipengele vya ujumbe wa Pulsar:
|
||
|
|
|
||
|
|
Ombi linajumuisha `id` katika vipengele: `properties={"id": id}`
|
||
|
|
Majibu (mengi) yanajumuisha `id` sawa: `properties={"id": id}`
|
||
|
|
|
||
|
|
Hii inafuata muundo uliopo katika codebase (e.g., `agent_service.py`, `llm_service.py`).
|
||
|
|
|
||
|
|
### Usaidizi wa Uhamaji (Streaming)
|
||
|
|
|
||
|
|
Huduma za zana zinaweza kurejesha majibu ya uhamaji:
|
||
|
|
|
||
|
|
Ujumbe mwingi wa majibu wenye `id` sawa katika vipengele
|
||
|
|
Kila jibu linajumuisha `end_of_stream: bool`
|
||
|
|
Jibu la mwisho lina `end_of_stream: True`
|
||
|
|
|
||
|
|
Hii inafanana na muundo uliotumika katika `AgentResponse` na huduma zingine za uhamaji.
|
||
|
|
|
||
|
|
### Usimamizi wa Majibu: Kurudisha Kamba (String)
|
||
|
|
|
||
|
|
Zana zote zilizopo zinafuata muundo huo: **kupokea hoja kama orodha, kurejesha matokeo kama kamba**.
|
||
|
|
|
||
|
|
| Zana | Usimamizi wa Majibu |
|
||
|
|
|------|------------------|
|
||
|
|
| `KnowledgeQueryImpl` | Inarejea `client.rag()` moja kwa moja (kamba) |
|
||
|
|
| `TextCompletionImpl` | Inarejea `client.question()` moja kwa moja (kamba) |
|
||
|
|
| `McpToolImpl` | Inarejea kamba, au `json.dumps(output)` ikiwa si kamba |
|
||
|
|
| `StructuredQueryImpl` | Inaweka matokeo katika kamba |
|
||
|
|
| `PromptImpl` | Inarejea `client.prompt()` moja kwa moja (kamba) |
|
||
|
|
|
||
|
|
Huduma za zana zinafuata mkataba huo:
|
||
|
|
Huduma inarejea jibu la kamba (matokeo)
|
||
|
|
Ikiwa jibu si kamba, linabadilishwa kupitia `json.dumps()`
|
||
|
|
Hakuna usanidi wa uondoaji unaohitajika katika maelezo
|
||
|
|
|
||
|
|
Hii huweka maelezo kuwa rahisi na kuweka jukumu kwa huduma kurejesha jibu la maandishi linalofaa kwa wakala.
|
||
|
|
|
||
|
|
## Mwongozo wa Usanidi
|
||
|
|
|
||
|
|
Ili kuongeza huduma mpya ya zana, vipengele viwili vya usanidi vinahitajika:
|
||
|
|
|
||
|
|
### 1. Usanidi wa Huduma ya Zana
|
||
|
|
|
||
|
|
Inahifadhiwa chini ya ufunguo wa usanidi `tool-service`. Inaelezea folyo za Pulsar na vigezo vinavyopatikana vya usanidi.
|
||
|
|
|
||
|
|
| Uwanja | Inahitajika | Maelezo |
|
||
|
|
|-------|----------|-------------|
|
||
|
|
| `id` | Ndiyo | Kitambulisho cha kipekee kwa huduma ya zana |
|
||
|
|
| `request-queue` | Ndiyo | Mada kamili ya Pulsar kwa maombi (e.g., `non-persistent://tg/request/joke`) |
|
||
|
|
| `response-queue` | Ndiyo | Mada kamili ya Pulsar kwa majibu (e.g., `non-persistent://tg/response/joke`) |
|
||
|
|
| `config-params` | Hapana | Safu ya vigezo vya usanidi ambavyo huduma inakubali |
|
||
|
|
|
||
|
|
Kila kiparamu cha usanidi kinaweza kuainisha:
|
||
|
|
`name`: Jina la kiparamu (inahitajika)
|
||
|
|
`required`: Ikiwa kiparamu lazima kipewe na zana (cha kawaida: bandia)
|
||
|
|
|
||
|
|
Mfano:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"id": "joke-service",
|
||
|
|
"request-queue": "non-persistent://tg/request/joke",
|
||
|
|
"response-queue": "non-persistent://tg/response/joke",
|
||
|
|
"config-params": [
|
||
|
|
{"name": "style", "required": false}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Usanidi wa Zana
|
||
|
|
|
||
|
|
Hifadhiwa chini ya ufunguo wa `tool`. Inaelezea zana ambayo wakala anaweza kutumia.
|
||
|
|
|
||
|
|
| Sehemu | Inahitajika | Maelezo |
|
||
|
|
|-------|----------|-------------|
|
||
|
|
| `type` | Ndiyo | Lazima iwe `"tool-service"` |
|
||
|
|
| `name` | Ndiyo | Jina la zana linaloonyeshwa kwa LLM |
|
||
|
|
| `description` | Ndiyo | Maelezo ya kile ambacho zana inafanya (yanaonyeshwa kwa LLM) |
|
||
|
|
| `service` | Ndiyo | Kitambulisho cha huduma ya zana inayotumiwa |
|
||
|
|
| `arguments` | Hapana | Safu ya maelezo ya hoja kwa ajili ya LLM |
|
||
|
|
| *(vigezo vya usanidi)* | Hubadilika | Vigezo vyovyote vya usanidi vilivyobainishwa na huduma |
|
||
|
|
|
||
|
|
Kila hoja inaweza kubainisha:
|
||
|
|
`name`: Jina la hoja (inahitajika)
|
||
|
|
`type`: Aina ya data, kwa mfano, `"string"` (inahitajika)
|
||
|
|
`description`: Maelezo yanayoonyeshwa kwa LLM (inahitajika)
|
||
|
|
|
||
|
|
Mfano:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "tool-service",
|
||
|
|
"name": "tell-joke",
|
||
|
|
"description": "Tell a joke on a given topic",
|
||
|
|
"service": "joke-service",
|
||
|
|
"style": "pun",
|
||
|
|
"arguments": [
|
||
|
|
{
|
||
|
|
"name": "topic",
|
||
|
|
"type": "string",
|
||
|
|
"description": "The topic for the joke (e.g., programming, animals, food)"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Upakiaji wa Mipangilio
|
||
|
|
|
||
|
|
Tumia `tg-put-config-item` ili kupakia mipangilio:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Load tool-service config
|
||
|
|
tg-put-config-item tool-service/joke-service < joke-service.json
|
||
|
|
|
||
|
|
# Load tool config
|
||
|
|
tg-put-config-item tool/tell-joke < tell-joke.json
|
||
|
|
```
|
||
|
|
|
||
|
|
Wakala-mtawala lazima uanzishwe tena ili kuchukua usanidi mpya.
|
||
|
|
|
||
|
|
## Maelezo ya Utendaji
|
||
|
|
|
||
|
|
### Mpango
|
||
|
|
|
||
|
|
Aina za ombi na majibu katika `trustgraph-base/trustgraph/schema/services/tool_service.py`:
|
||
|
|
|
||
|
|
```python
|
||
|
|
@dataclass
|
||
|
|
class ToolServiceRequest:
|
||
|
|
user: str = "" # User context for multi-tenancy
|
||
|
|
config: str = "" # JSON-encoded config values from tool descriptor
|
||
|
|
arguments: str = "" # JSON-encoded arguments from LLM
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class ToolServiceResponse:
|
||
|
|
error: Error | None = None
|
||
|
|
response: str = "" # String response (the observation)
|
||
|
|
end_of_stream: bool = False
|
||
|
|
```
|
||
|
|
|
||
|
|
### Upande wa Server: Huduma ya DynamicToolService
|
||
|
|
|
||
|
|
Darasa la msingi katika `trustgraph-base/trustgraph/base/dynamic_tool_service.py`:
|
||
|
|
|
||
|
|
```python
|
||
|
|
class DynamicToolService(AsyncProcessor):
|
||
|
|
"""Base class for implementing tool services."""
|
||
|
|
|
||
|
|
def __init__(self, **params):
|
||
|
|
topic = params.get("topic", default_topic)
|
||
|
|
# Constructs topics: non-persistent://tg/request/{topic}, non-persistent://tg/response/{topic}
|
||
|
|
# Sets up Consumer and Producer
|
||
|
|
|
||
|
|
async def invoke(self, user, config, arguments):
|
||
|
|
"""Override this method to implement the tool's logic."""
|
||
|
|
raise NotImplementedError()
|
||
|
|
```
|
||
|
|
|
||
|
|
### Upande wa Mteja: Huduma ya ToolServiceImpl
|
||
|
|
|
||
|
|
Utendaji katika `trustgraph-flow/trustgraph/agent/react/tools.py`:
|
||
|
|
|
||
|
|
```python
|
||
|
|
class ToolServiceImpl:
|
||
|
|
def __init__(self, context, request_queue, response_queue, config_values, arguments, processor):
|
||
|
|
# Uses the provided queue paths directly
|
||
|
|
# Creates ToolServiceClient on first use
|
||
|
|
|
||
|
|
async def invoke(self, **arguments):
|
||
|
|
client = await self._get_or_create_client()
|
||
|
|
response = await client.call(user, config_values, arguments)
|
||
|
|
return response if isinstance(response, str) else json.dumps(response)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Faili
|
||
|
|
|
||
|
|
| Faili | Madhumuni |
|
||
|
|
|------|---------|
|
||
|
|
| `trustgraph-base/trustgraph/schema/services/tool_service.py` | Mifumo ya ombi/jibu |
|
||
|
|
| `trustgraph-base/trustgraph/base/tool_service_client.py` | Mteja wa kutumia huduma |
|
||
|
|
| `trustgraph-base/trustgraph/base/dynamic_tool_service.py` | Darasa la msingi kwa utekelezaji wa huduma |
|
||
|
|
| `trustgraph-flow/trustgraph/agent/react/tools.py` | Darasa la `ToolServiceImpl` |
|
||
|
|
| `trustgraph-flow/trustgraph/agent/react/service.py` | Kupakia usanidi |
|
||
|
|
|
||
|
|
### Mifano: Huduma ya Utani
|
||
|
|
|
||
|
|
Mfano wa huduma katika `trustgraph-flow/trustgraph/tool_service/joke/`:
|
||
|
|
|
||
|
|
```python
|
||
|
|
class Processor(DynamicToolService):
|
||
|
|
async def invoke(self, user, config, arguments):
|
||
|
|
style = config.get("style", "pun")
|
||
|
|
topic = arguments.get("topic", "")
|
||
|
|
joke = pick_joke(topic, style)
|
||
|
|
return f"Hey {user}! Here's a {style} for you:\n\n{joke}"
|
||
|
|
```
|
||
|
|
|
||
|
|
Usanidi wa huduma za zana:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"id": "joke-service",
|
||
|
|
"request-queue": "non-persistent://tg/request/joke",
|
||
|
|
"response-queue": "non-persistent://tg/response/joke",
|
||
|
|
"config-params": [{"name": "style", "required": false}]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Usanidi wa zana:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "tool-service",
|
||
|
|
"name": "tell-joke",
|
||
|
|
"description": "Tell a joke on a given topic",
|
||
|
|
"service": "joke-service",
|
||
|
|
"style": "pun",
|
||
|
|
"arguments": [
|
||
|
|
{"name": "topic", "type": "string", "description": "The topic for the joke"}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Ulinganishi na Matoleo ya Zamani
|
||
|
|
|
||
|
|
Aina za zana zilizopo zilizojumuishwa zinaendelea kufanya kazi bila kubadilishwa.
|
||
|
|
`tool-service` ni aina mpya ya zana pamoja na aina zilizopo (`knowledge-query`, `mcp-tool`, n.k.).
|
||
|
|
|
||
|
|
## Mambo ya Kuzingatia Baadaye
|
||
|
|
|
||
|
|
### Huduma Zinajitangaza Zenyewe
|
||
|
|
|
||
|
|
Uboreshaji wa siku zijazo unaweza kuruhusu huduma kuchapisha maelezo yao wenyewe:
|
||
|
|
|
||
|
|
Huduma huchapisha kwenye mada iliyojulikana ya `tool-descriptors` wakati wa kuanza.
|
||
|
|
Wakala husajili na kusajili zana kwa njia ya moja kwa moja.
|
||
|
|
Inaruhusu uunganishaji halisi wa "plug-and-play" bila mabadiliko ya usanidi.
|
||
|
|
|
||
|
|
Hii ni nje ya upeo wa utekelezaji wa awali.
|
||
|
|
|
||
|
|
## Marejeleo
|
||
|
|
|
||
|
|
Utaratibu wa sasa wa zana: `trustgraph-flow/trustgraph/agent/react/tools.py`
|
||
|
|
Usajili wa zana: `trustgraph-flow/trustgraph/agent/react/service.py:105-214`
|
||
|
|
Schemas za wakala: `trustgraph-base/trustgraph/schema/services/agent.py`
|