mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-07-21 06:07:13 +08:00
fix: agent skills
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: linkai-agent
|
||||
description: Call LinkAI applications and workflows. Use bash command to execute like 'bash <base_dir>/scripts/call.sh <app_code> <question>'.
|
||||
description: Call LinkAI applications and workflows. Use bash with curl to invoke the chat completions API.
|
||||
homepage: https://link-ai.tech
|
||||
metadata:
|
||||
emoji: 🤖
|
||||
@@ -10,110 +10,61 @@ metadata:
|
||||
primaryEnv: "LINKAI_API_KEY"
|
||||
---
|
||||
|
||||
# LinkAI Agent Caller
|
||||
# LinkAI Agent
|
||||
|
||||
Call LinkAI applications and workflows through API. Supports multiple apps/workflows configured in config.json.
|
||||
|
||||
The available apps are dynamically loaded from `config.json` at skill loading time.
|
||||
Call LinkAI applications and workflows through the chat completions API. Available apps are loaded from config.json.
|
||||
|
||||
## Setup
|
||||
|
||||
This skill requires a LinkAI API key. If not configured:
|
||||
This skill requires a LinkAI API key.
|
||||
|
||||
1. Get your API key from https://link-ai.tech/console/api-keys
|
||||
2. Set the key using: `env_config(action="set", key="LINKAI_API_KEY", value="your-key")`
|
||||
1. Get your API key from [LinkAI Console](https://link-ai.tech/console/interface)
|
||||
2. Set the environment variable: `export LINKAI_API_KEY=Link_xxxxxxxxxxxx` (or use env_config tool)
|
||||
|
||||
## Configuration
|
||||
|
||||
1. Copy `config.json.template` to `config.json`
|
||||
2. Configure your apps/workflows:
|
||||
|
||||
```json
|
||||
{
|
||||
"apps": [
|
||||
{
|
||||
"app_code": "your_app_code",
|
||||
"app_name": "App Name",
|
||||
"app_description": "What this app does"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
3. The skill description will be automatically updated when the agent loads this skill
|
||||
2. Add your apps/workflows in config.json. The skill description is auto-generated from this config when loaded.
|
||||
|
||||
## Usage
|
||||
|
||||
**Important**: Scripts are located relative to this skill's base directory.
|
||||
|
||||
When you see this skill in `<available_skills>`, note the `<base_dir>` path.
|
||||
|
||||
**CRITICAL**: Always use `bash` command to execute the script:
|
||||
Use the bash tool with curl to call the API. **Prefer curl** to avoid encoding issues on Windows PowerShell.
|
||||
|
||||
```bash
|
||||
# General pattern (MUST start with bash):
|
||||
bash "<base_dir>/scripts/call.sh" "<app_code>" "<question>" [model] [stream] [timeout]
|
||||
|
||||
# DO NOT execute the script directly like this (WRONG):
|
||||
# "<base_dir>/scripts/call.sh" ...
|
||||
|
||||
# Parameters:
|
||||
# - app_code: LinkAI app or workflow code (required)
|
||||
# - question: User question (required)
|
||||
# - model: Override model (optional, uses app default if not specified)
|
||||
# - stream: Enable streaming (true/false, default: false)
|
||||
# - timeout: curl timeout in seconds (default: 120, recommended for video/image generation)
|
||||
curl -X POST "https://api.link-ai.tech/v1/chat/completions" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $LINKAI_API_KEY" \
|
||||
-d '{
|
||||
"app_code": "<app_code>",
|
||||
"messages": [{"role": "user", "content": "<question>"}],
|
||||
"stream": false
|
||||
}'
|
||||
```
|
||||
|
||||
**IMPORTANT - Timeout Configuration**:
|
||||
- The script has a **default timeout of 120 seconds** (suitable for most cases)
|
||||
- For complex tasks (video generation, large workflows), pass a longer timeout as the 5th parameter
|
||||
- The bash tool also needs sufficient timeout - set its `timeout` parameter accordingly
|
||||
- Example: `bash(command="bash <script> <app_code> <question> '' 'false' 180", timeout=200)`
|
||||
**Optional parameters**:
|
||||
|
||||
## Examples
|
||||
- Add `--max-time 120` to curl for long-running tasks (video/image generation)
|
||||
|
||||
**On Windows cmd**: Use `%LINKAI_API_KEY%` instead of `$LINKAI_API_KEY`.
|
||||
|
||||
**Example** (via bash tool):
|
||||
|
||||
### Call an app (uses default 60s timeout)
|
||||
```bash
|
||||
bash(command='bash "<base_dir>/scripts/call.sh" "G7z6vKwp" "What is AI?"', timeout=60)
|
||||
bash(command='curl -sS --max-time 120 -X POST "https://api.link-ai.tech/v1/chat/completions" -H "Content-Type: application/json" -H "Authorization: Bearer $LINKAI_API_KEY" -d "{\"app_code\":\"G7z6vKwp\",\"messages\":[{\"role\":\"user\",\"content\":\"What is AI?\"}],\"stream\":false}"', timeout=130)
|
||||
```
|
||||
|
||||
### Call an app with specific model
|
||||
```bash
|
||||
bash(command='bash "<base_dir>/scripts/call.sh" "G7z6vKwp" "Explain machine learning" "LinkAI-4.1"', timeout=60)
|
||||
```
|
||||
## Response
|
||||
|
||||
### Call a workflow with custom timeout (video generation)
|
||||
```bash
|
||||
# Pass timeout as 5th parameter to script, and set bash timeout slightly longer
|
||||
bash(command='bash "<base_dir>/scripts/call.sh" "workflow_code" "Generate a sunset video" "" "false" "180"', timeout=180)
|
||||
```
|
||||
```bash
|
||||
bash "<base_dir>/scripts/call.sh" "workflow_code" "Analyze this data: ..."
|
||||
```
|
||||
Success (extract `choices[0].message.content` from JSON):
|
||||
|
||||
## Supported Models
|
||||
|
||||
You can specify any LinkAI supported model:
|
||||
- `LinkAI-4.1` - Latest GPT-4.1 model (1000K context)
|
||||
- `LinkAI-4.1-mini` - GPT-4.1 mini (1000K context)
|
||||
- `LinkAI-4o` - GPT-4o model (128K context)
|
||||
- `LinkAI-4o-mini` - GPT-4o mini (128K context)
|
||||
- `deepseek-chat` - DeepSeek-V3 (64K context)
|
||||
- `deepseek-reasoner` - DeepSeek-R1 reasoning model
|
||||
- `claude-4-sonnet` - Claude 4 Sonnet (200K context)
|
||||
- `gemini-2.5-pro` - Gemini 2.5 Pro (1000K context)
|
||||
- And many more...
|
||||
|
||||
Full model list: https://link-ai.tech/console/models
|
||||
|
||||
## Response Format
|
||||
|
||||
Success response:
|
||||
```json
|
||||
{
|
||||
"app_code": "G7z6vKwp",
|
||||
"content": "AI stands for Artificial Intelligence...",
|
||||
"choices": [{
|
||||
"message": {
|
||||
"role": "assistant",
|
||||
"content": "AI stands for Artificial Intelligence..."
|
||||
}
|
||||
}],
|
||||
"usage": {
|
||||
"prompt_tokens": 10,
|
||||
"completion_tokens": 50,
|
||||
@@ -122,44 +73,13 @@ Success response:
|
||||
}
|
||||
```
|
||||
|
||||
Error response:
|
||||
Error:
|
||||
|
||||
```json
|
||||
{
|
||||
"error": "Error description",
|
||||
"message": "Detailed error message"
|
||||
"error": {
|
||||
"message": "Error description",
|
||||
"code": "error_code"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
- ✅ **Multiple Apps**: Configure and call multiple LinkAI apps/workflows
|
||||
- ✅ **Dynamic Loading**: Apps are loaded from config.json at runtime
|
||||
- ✅ **Model Override**: Optionally specify model per request
|
||||
- ✅ **Streaming Support**: Enable streaming output
|
||||
- ✅ **Knowledge Base**: Apps can use configured knowledge bases
|
||||
- ✅ **Plugins**: Apps can use enabled plugins (image recognition, web search, etc.)
|
||||
- ✅ **Workflows**: Execute complex multi-step workflows
|
||||
|
||||
## Notes
|
||||
|
||||
- Each app/workflow maintains its own configuration (prompt, model, temperature, etc.)
|
||||
- Apps can have knowledge bases attached for domain-specific Q&A
|
||||
- Workflows execute from start node to end node and return final output
|
||||
- Token usage and costs depend on the model used
|
||||
- See LinkAI documentation for pricing: https://link-ai.tech/console/funds
|
||||
- The skill description is automatically generated from config.json when loaded
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**"LINKAI_API_KEY environment variable is not set"**
|
||||
- Use env_config tool to set the API key
|
||||
|
||||
**"app_code is required"**
|
||||
- Make sure you're passing the app_code as the first parameter
|
||||
|
||||
**"应用不存在" (App not found)**
|
||||
- Check that the app_code is correct
|
||||
- Ensure you have access to the app
|
||||
|
||||
**"账号积分额度不足" (Insufficient credits)**
|
||||
- Top up your LinkAI account credits
|
||||
|
||||
Reference in New Issue
Block a user