Skip to content

volcengine/ai-app-lab

Repository files navigation

高代码 Python SDK Arkitect

SDK 介绍

概述

高代码 Python SDK Arkitect,面向具有专业开发能力的企业开发者,提供大模型应用开发需要用到的工具集和流程集。借助高代码 SDK Arkitect 和 AI 原型应用代码示例,您能够快速开发和扩展匹配您业务场景的大模型相关应用。

框架优势

  • 高度定制化: 提供高代码智能体应用编排方式,灵活服务客户高度定制化和自定义需求。
  • 丰富优质的业务工具: 面向企业客户提供高质量、有保障的业务工具,包括丰富的业务插件库与工具链,支持与先进的大模型进行组合串联,实现一个端到端解决问题的智能体应用。
  • 一站式开发与托管服务: 简化智能体应用部署和管理的流程,增强系统的稳定性。
  • 安全可靠: 提供方舟的安全加固实践,增强业务数据的安全性和保密性,减小数据泄漏或窃取风险。
  • AI 原型应用代码示例: 开发者可快速上手和扩展的示例,基于示例您可以按需进行定制化开发。

应用场景

面向复杂的企业开发场景,搭建高定制化与自定义的智能体应用,赋能大模型在各行业场景的落地应用,实现企业智能化升级。

  • 智能驾舱: 为汽车行业用户提供车载智能交互, 包括角色扮演、聊天、联网查询(天气、视频、新闻等)、车机能力唤起等多功能的融合编排使用。
  • 金融服务: 为金融行业用户提供智能投顾、风险评估等服务,提升金融服务的效率和客户满意度。
  • 电商库存管理: 为电商行业提供高效的库存管理方案。包括商品库存管理与查询、分析与预测需求,保证供应链运营的流畅性和效率。
  • 办公助理: 支持企业客户在办公场景下文档写作、会议管理、数据分析等需求。
  • 行业大模型应用: 企业可根据业务和目标进行定制和拓展。包括但不限于泛互联网、工业、政务、交通、汽车、金融等各行业场景的大模型落地应用。

架构设计

image

支持特性

功能点 功能简介
Prompt 渲染及模型调用 简化调用模型时,prompt渲染及模型调用结果处理的流程。
插件调用 支持插件本地注册、插件管理及对接FC模型自动化调用。
Trace 监控 支持对接otel协议的trace管理及上报。

应用列表

应用名称 应用简介
互动双语视频生成器 只需输入一个主题,就能为你生成引人入胜且富有含义的双语视频。
视频实时理解 多模态洞察,基于豆包-视觉理解模型实时视觉与语音理解。
语音实时通话-青青 嗨,我是你的朋友乔青青,快来和我语音通话吧!

快速入门

基础聊天

  1. 安装 arkitect

    pip install arkitect --index-url https://pypi.org/simple
    
  2. 登录方舟控制台,创建一个推理接入点(Endpoint),推荐使用Doubao-pro-32k 参考文档

  3. 登录方舟控制台,创建一个 API KEY 参考文档

  4. 创建main.py,修改文件中的 endpoint_id 为您新创建的推理接入点 ID。

"""
默认llm逻辑
"""
import os
from typing import AsyncIterable, Union

from arkitect.core.component.llm import BaseChatLanguageModel

from arkitect.core.component.llm.model import (
    ArkChatCompletionChunk,
    ArkChatParameters,
    ArkChatRequest,
    ArkChatResponse,
    Response,
)
from arkitect.launcher.local.serve import launch_serve
from arkitect.telemetry.trace import task

endpoint_id = "<YOUR ENDPOINT ID>"

@task()
async def default_model_calling(
    request: ArkChatRequest,
) -> AsyncIterable[Union[ArkChatCompletionChunk, ArkChatResponse]]:
    parameters = ArkChatParameters(**request.__dict__)
    llm = BaseChatLanguageModel(
        endpoint_id=endpoint_id,
        messages=request.messages,
        parameters=parameters,
    )
    if request.stream:
        async for resp in llm.astream():
            yield resp
    else:
        yield await llm.arun()

@task()
async def main(request: ArkChatRequest) -> AsyncIterable[Response]:
    async for resp in default_model_calling(request):
        yield resp

if __name__ == "__main__":
    port = os.getenv("_FAAS_RUNTIME_PORT")
    launch_serve(
        package_path="main",
        port=int(port) if port else 8080,
        health_check_path="/v1/ping",
        endpoint_path="/api/v3/bots/chat/completions",
        clients={},
    )

  1. 设置 APIKEY 并启动后端
export ARK_API_KEY=<YOUR APIKEY>
python3 main.py
  1. 发起请求
curl --location 'http://localhost:8080/api/v3/bots/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
    "model": "my-bot",
    "messages": [
        {
            "role": "user",
            "content": "介绍你自己啊"
        }
    ]
}'

预期返回如下:

{
    "error": null,
    "id": "02173*************************************",
    "choices": [
        {
            "finish_reason": "stop",
            "moderation_hit_type": null,
            "index": 0,
            "logprobs": null,
            "message": {
                "content": "我是豆包,由字节跳动公司开发。我能陪你谈天说地,无论是解答各种知识疑问,比如科学原理、历史事件;还是探讨文化艺术、娱乐八卦;亦或是在生活问题上给你提供建议和思路,像制定旅行计划、规划健身安排、分享美食烹饪方法等,我都很在行。随时都可以和我交流,我时刻准备着为你排忧解难、畅聊想法!  ",
                "role": "assistant",
                "function_call": null,
                "tool_calls": null,
                "audio": null
            }
        }
    ],
    "created": 1736847939,
    "model": "doubao-pro-32k-241215",
    "object": "chat.completion",
    "usage": {
        "completion_tokens": 95,
        "prompt_tokens": 12,
        "total_tokens": 107,
        "prompt_tokens_details": {
            "cached_tokens": 0
        }
    },
    "metadata": null
}

插件调用

  1. 安装 arkitect

    pip install arkitect --index-url https://pypi.org/simple
    
  2. 登录方舟控制台,创建一个推理接入点(Endpoint),请选择带 Function-call 能力的模型,推荐使用doubao-pro-32k functioncall-241028 参考文档

  3. 登录方舟控制台,创建一个 API KEY 参考文档

  4. 创建main.py,修改文件中的 endpoint_id 为您新创建的推理接入点 ID。

"""
fc+llm
"""

import os
from typing import AsyncIterable, Union

from arkitect.core.component.llm import BaseChatLanguageModel

from arkitect.core.component.llm.model import (
    ArkChatCompletionChunk,
    ArkChatParameters,
    ArkChatRequest,
    ArkChatResponse,
    Response,
)
from arkitect.core.component.tool import Calculator, ToolPool
from arkitect.launcher.local.serve import launch_serve
from arkitect.telemetry.trace import task

endpoint_id = "<YOUR ENDPOINT ID>"

@task()
async def default_model_calling(
    request: ArkChatRequest,
) -> AsyncIterable[Union[ArkChatCompletionChunk, ArkChatResponse]]:
    parameters = ArkChatParameters(**request.__dict__)
    ToolPool.register(Calculator())

    llm = BaseChatLanguageModel(
        endpoint_id=endpoint_id,
        messages=request.messages,
        parameters=parameters,
    )
    if request.stream:
        async for resp in llm.astream(functions=ToolPool.all()):
            yield resp
    else:
        yield await llm.arun(functions=ToolPool.all())


@task()
async def main(request: ArkChatRequest) -> AsyncIterable[Response]:
    async for resp in default_model_calling(request):
        yield resp


if __name__ == "__main__":
    port = os.getenv("_FAAS_RUNTIME_PORT")
    launch_serve(
        package_path="main",
        port=int(port) if port else 8080,
        health_check_path="/v1/ping",
        endpoint_path="/api/v3/bots/chat/completions",
        clients={},
    )

  1. 设置 APIKEY 并启动后端
export ARK_API_KEY=<YOUR APIKEY>
python3 main.py
  1. 发起请求
curl --location 'http://localhost:8080/api/v3/bots/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
    "model": "my-bot",
    "messages": [
        {
            "role": "user",
            "content": "老王要养马,他有这样一池水:如果养马30匹,8天可可以把水喝光;如果养马25匹,12天把水喝光。老王要养马23匹,那么几天后他要为马找水喝?"
        }
    ]
}'

预期返回如下:

{
    "error": null,
    "id": "0xxxxxxxxx",
    "choices": [
        {
            "finish_reason": "stop",
            "moderation_hit_type": null,
            "index": 0,
            "logprobs": null,
            "message": {
                "content": "\n首先计算出每天新增的水量,再算出池中原有的水量,最后根据养马数量计算水可以喝的天数,调用 `Calculator/Calculator` 工具进行计算。\n\n假设每匹马每天的饮水量为\\(1\\)份,我们先来求出每天新增的水量。\n\n\n\n假设每匹马每天的饮水量为1份。30匹马8天的饮水量为$30\\times8=240$份,25匹马12天的饮水量为$25\\times12=300$份。那么12天的总饮水量比8天的总饮水量多了$300-240=60$份,这60份水是$12-8=4$天新增加的水量,所以每天新增加的水量为$60\\div4=15$份。则水池原有的水量为$30\\times8-15\\times8=120$份。如果养23匹马,每天实际消耗原水池的水量为$23-15=8$份,所以喝完水池里的水需要$120\\div8=15$天\n15天后他要为马找水喝。",
                "role": "assistant",
                "function_call": null,
                "tool_calls": null,
                "audio": null
            }
        }
    ],
    "created": 1737022804,
    "model": "doubao-pro-32k-241215",
    "object": "chat.completion",
    "usage": {
        "completion_tokens": 558,
        "prompt_tokens": 1361,
        "total_tokens": 1919,
        "prompt_tokens_details": {
            "cached_tokens": 0
        }
    },
    "metadata": null
}

常见问题

arkitect 和 volcenginesdkarkruntime 的区别?

  • arkitect 是方舟高代码智能体 SDK,面向具有专业开发能力的企业开发者,提供智能体开发需要用到的工具集和流程集。
  • volcenginesdkarkruntime 是对方舟的 API 进行封装,方便用户通过 API 创建、管理和调用大模型相关服务。

LICENSE说明

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published