ai-app-lab

ai-app-lab

None

Stars: 120

Visit
 screenshot

The ai-app-lab is a high-code Python SDK Arkitect designed for enterprise developers with professional development capabilities. It provides a toolset and workflow set for developing large model applications tailored to specific business scenarios. The SDK offers highly customizable application orchestration, quality business tools, one-stop development and hosting services, security enhancements, and AI prototype application code examples. It caters to complex enterprise development scenarios, enabling the creation of highly customized intelligent applications for various industries.

README:

高代码 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说明

For Tasks:

Click tags to check more tools for each tasks

For Jobs:

Alternative AI tools for ai-app-lab

Similar Open Source Tools

For similar tasks

For similar jobs