Skip to content

Welcome to TFRobotV2

TFRobot是什么?

TFRobot是一个基于LLM的Agent开发框架。它可以帮助开发者快速的开发出一个基于LLM的Agent,并且可以在不同的场景下进行调试与部署。

  1. TFRobot调用链全面接入OpenTelemetry,可以方便的接入各种监控系统,同时追踪Agent完整的调用链。
  2. TFRobot提供了Drive/Brain/Memory/Chain/LLM/Prompt等独立模块封装,易于调试与替换。
  3. 针对不同的场景,TFRobot提供了比如Faiss,Chroma等不同模块的适配,方便开发者快速的进行开发。
  4. 插件化的设计,方便开发者进行二次开发与扩展。

随着大语言模型(LLM)能力的不断提升,可以看到越来越多的基于LLM的应用被开发出来,其中最为典型的就是对话系统(比如ChatGPT)与代码补全系统(比如Github Copilot)。 几乎各个LLM厂商均会标配一个ChatXXX的产品。

但随着应用场景的不断深入与具象化,Chat的产品形式逐渐显得单薄,Copilot类型的产品也不能解决全部问题。市场亟待一些新的产品形态来辅助人们提升生产力。

比如:

  1. 在内容创作与编辑领域,大模型如何助力小说创作,文章选题,文案撰写等?
  2. 在工程开发角度,大模型如何助力测试用例开发,代码审查,文档编写?
  3. 在行解领域,大模型如何助力整合资料与方案,如何辅助规划大纲并完成细节?

在如上领域,其实已经有了非常多的成功的产品,除了Github Copilot之外,微软的Office Copilot等等也在不断的发展中。

但这些商业化的产品往往只是解决了一部分问题,而且往往是封闭的,不具备可扩展性。同时它们比较难接入目前团队的工作流程与业务数据。

  1. 它们的产品形态往往是固化的,不可定制。
  2. 它们的数据往往是封闭的,不可扩展。即使可扩展,受限于商业利益,团队数据也不能随意开放给这些大型商业公司。

TFRobot架构简介

架构图

如何使用

目前TFRobotV2版本尚未开源,仅在公司内部部署使用,可用的Release版本对应的Python包名为tfrobot,存储在公司内部的PyPI仓库中。 使用方式请按以下步骤进行:

1. 配置当前的Poetry或者其它包管理环境,添加公司私有PyPi源信息。

私有源信息参考:TuringFocus私有PyPi源 私有源配置教程:Poetry私有PyPi源配置

2. 在项目中添加依赖,参考配置如下:

tfrobot = {extras = ["all"], version = "0.1.7rc0"}

3. 因为引用了Unstructured-IO的相关能力,对于本地环境有些依赖需要确认安装

参考Unstructured-IO官方文档进行环境确认:Unstructured

TFRobotV2提供了一个简单的脚本可以尝试运行进行安装,但安装过程中可能会出现一些报错,需要自行解决,因为编译类的问题不同平台问题不一,不太方便统一解答,但依赖都是一些大的开源库,互联网上有足够的信息可以解决。

#!/bin/bash

# 停止脚本在遇到错误时继续运行
set -e

# 打印正在执行的命令
set -x

# 检测操作系统类型
OS="$(uname -s)"
case "${OS}" in
    Linux*)
        # 检测Linux发行版
        if [ -f /etc/os-release ]; then
            . /etc/os-release
            case "${ID}" in
                ubuntu|debian)
                    pkg_manager="sudo apt-get"
                    packages="libmagic-dev poppler-utils tesseract-ocr libreoffice pandoc"
                    ;;
                centos|fedora|rhel)
                    pkg_manager="sudo yum"
                    packages="poppler-utils tesseract libreoffice pandoc"
                    # CentOS/RHEL/Fedora可能需要额外的配置来安装libmagic和libmagic-devel
                    ;;
                *)
                    echo "Unsupported Linux distribution: ${ID}" && exit 1
                    ;;
            esac
        else
            echo "Cannot determine Linux distribution" && exit 1
        fi
        ;;
    Darwin*)
        # 检查是否安装了Homebrew
        if ! command -v brew >/dev/null 2>&1; then
            echo "Homebrew is not installed. Please install Homebrew first." && exit 1
        fi
        pkg_manager="brew"
        packages="libmagic poppler tesseract ocrmypdf libreoffice pandoc"
        ;;
    *)
        echo "Unsupported OS: ${OS}" && exit 1
        ;;
esac

# 安装必要的库
${pkg_manager} update
case "${OS}" in
    Linux*)
        # Linux系统安装包
        ${pkg_manager} install -y ${packages}
        ;;
    Darwin*)
        # macOS系统安装包
        for package in ${packages}; do
            ${pkg_manager} install ${package}
        done
        ;;
    *)
        echo "Unsupported OS: ${OS}" && exit 1
        ;;
esac

4. 下载常用模型

对于SpaCy与NLTK,会有基础模型需要下载,可以参考如下脚本将模型下载至本地。

"""
此文件用于poetry 初始化项目时动态安装完整依赖
"""


def download_spacy_model(model_name):
    import spacy.cli

    spacy.cli.download(model_name)


def download_nltk_data(data_package):
    import nltk

    nltk.download(data_package)


def main():
    download_spacy_model("en_core_web_sm")
    download_nltk_data("punkt")


if __name__ == "__main__":
    main()