obsei

GitHub
1.4k 175 简单 1 次阅读 昨天Apache-2.0语言模型Agent
AI 解读 由 AI 自动生成,仅供参考

Obsei 是一款开源的低代码 AI 自动化工具,旨在帮助企业轻松处理非结构化数据。它通过“观察 - 分析 - 通知”三步流程,自动从社交媒体、应用商店评论、新闻网站等渠道收集信息,利用人工智能进行情感分析、分类或翻译,并将结果推送至工单系统或数据库中,以便团队及时采取行动。

对于需要监控品牌声誉、倾听用户反馈或自动化客户投诉处理的企业而言,Obsei 有效解决了人工收集和分析海量网络数据效率低下、响应滞后的痛点。无论是初创公司的运营人员,还是希望快速构建自动化工作流的技术开发者,都能借助其低代码特性灵活部署,无需深厚的算法背景即可上手。

Obsei 的独特之处在于其模块化架构:观察者(Observer)、分析器(Analyzer)和通知器(Informer)可自由组合,支持对接多种数据源与下游应用。此外,它还具备状态持久化能力,能够稳定运行于定时任务或无服务器环境中。目前项目处于 Alpha 阶段,适合愿意尝试新技术并进行场景验证的用户探索使用。

使用场景

某电商品牌的客户体验团队每天需要监控 Twitter、Reddit 及应用商店中数千条关于新品的用户评论,以快速识别潜在的产品缺陷和负面舆情。

没有 obsei 时

  • 团队成员需手动登录多个平台逐条复制评论,耗时费力且容易遗漏关键信息。
  • 面对海量非结构化文本,人工判断情感倾向(正面/负面)标准不一,导致误判率高。
  • 发现严重投诉后,依赖人工转发至工单系统,平均响应延迟超过 4 小时,错失最佳挽回时机。
  • 缺乏统一的数据存储格式,难以进行跨渠道的对比分析和长期趋势追踪。
  • 夜间或节假日出现突发舆情时,因无人值守导致品牌声誉受损风险激增。

使用 obsei 后

  • 配置 Obsei 的 Observer 模块自动抓取多平台评论,实现 7x24 小时无人值守的数据收集。
  • 利用 Analyzer 模块的 AI 模型统一进行情感分析与分类,准确识别愤怒情绪并提取敏感实体(PII)。
  • 通过 Informer 模块将确认为“严重投诉”的数据自动推送到 Jira 等工单系统,触发即时警报,响应时间缩短至分钟级。
  • 所有分析结果自动存入数据库并形成结构化 DataFrame,便于团队直接生成可视化报表进行深度洞察。
  • 建立自动化闭环流程,即使在非工作时间也能确保负面反馈被即时捕获并分派给相应负责人。

Obsei 将原本需要多人协作数小时的被动监控工作,转化为实时、精准且全自动的智能预警体系,显著提升了品牌危机应对能力。

运行环境要求

操作系统
  • 未说明 (基于 Python 和 PyTorch,通常支持 Linux
  • macOS
  • Windows)
GPU
  • 非必需
  • 仅在安装 [analyzer] 组件时依赖 PyTorch,可根据任务选择 CPU 或 GPU 运行,README 未指定具体显卡型号或 CUDA 版本要求
内存

未说明

依赖
notes该工具处于 Alpha 阶段,生产环境请谨慎使用并建议使用发布版本而非 master 分支。支持模块化安装,可通过 pip install obsei[组件名] 按需安装依赖(如 twitter-api, analyzer, slack-api 等),避免安装不必要的库。Analyzer 组件会安装 PyTorch,其他组件通常不需要重型深度学习框架。
python3.7+
torch (可选,安装 analyzer 时必需)
PyPI: obsei
obsei hero image

快速开始


Test License PyPI - Python Version Release Downloads HF Spaces Last commit Github stars YouTube Channel Subscribers



注意:Obsei目前仍处于alpha阶段,因此请在生产环境中谨慎使用。此外,由于它正在持续开发中,主分支可能包含许多破坏性更改。请使用已发布的版本。

Obsei(发音为“奥布西” | /əb-'sē/)是一款开源、低代码、基于人工智能的自动化工具。_Obsei_由以下部分组成:

  • 观察者:从各种来源收集非结构化数据,例如Twitter上的推文、Reddit上的Subreddit评论、Facebook页面帖子的评论、应用商店评价、Google评价、Amazon评价、新闻、网站等。
  • 分析器:利用多种人工智能任务对收集到的非结构化数据进行分析,如分类、情感分析、翻译、个人身份信息处理等。
  • 通知者:将分析后的数据发送到各种目的地,如工单平台、数据存储、数据框等,以便用户采取进一步行动并对数据进行分析。

所有观察者都可以将其状态存储在数据库中(SQLite、PostgreSQL、MySQL等),这使得Obsei非常适合定时作业或无服务器应用。

Obsei示意图

未来方向 -

  • 面向文本、图像、音频、文档和视频的工作流
  • 从所有可能的私有和公共渠道收集数据
  • 将所有可能的工作流添加到人工智能下游应用中,以实现手动认知工作的自动化

使用场景

_Obsei_的使用场景包括但不限于:

  • 社交监听:监听社交媒体帖子、评论、客户反馈等。
  • 警报/通知:针对客户投诉、合格销售线索等事件自动获取警报。
  • 根据社交媒体、电子邮件等渠道的客户投诉自动生成客户问题。
  • 根据客户投诉内容自动为工单分配合适的标签,例如登录问题、注册问题、配送问题等。
  • 从各个平台的反馈中提取更深入的洞察。
  • 市场研究。
  • 为各种人工智能任务创建数据集。
  • 更多基于创造力的场景💡

安装

先决条件

安装以下内容(如果尚未安装):

安装 Obsei

您可以根据自己的偏好,通过 PIP 或 Conda 安装 Obsei。

要安装最新发布的版本 -

pip install obsei[all]

从主分支安装(如果您想尝试最新功能)-

git clone https://github.com/obsei/obsei.git
cd obsei
pip install --editable .[all]

注意:all 选项会安装所有依赖项,而这些依赖项可能并非您的工作流所必需。作为替代方案,您可以根据需要安装以下最小依赖项:

  • pip install obsei[source]:安装与所有观察者相关的依赖项
  • pip install obsei[sink]:安装与所有通知器相关的依赖项
  • pip install obsei[analyzer]:安装与所有分析器相关的依赖项,同时会安装 PyTorch
  • pip install obsei[twitter-api]:安装与 Twitter 观察者相关的依赖项
  • pip install obsei[google-play-scraper]:安装与 Play 商店评论抓取器观察者相关的依赖项
  • pip install obsei[google-play-api]:安装与 Google 官方 Play 商店评论 API 基础的观察者相关的依赖项
  • pip install obsei[app-store-scraper]:安装与 Apple App Store 评论抓取器观察者相关的依赖项
  • pip install obsei[reddit-scraper]:安装与 Reddit 帖子和评论抓取器观察者相关的依赖项
  • pip install obsei[reddit-api]:安装与 Reddit 官方 API 基础的观察者相关的依赖项
  • pip install obsei[pandas]:安装与 TSV/CSV/Pandas 基础的观察者和通知器相关的依赖项
  • pip install obsei[google-news-scraper]:安装与 Google 新闻抓取器观察者相关的依赖项
  • pip install obsei[facebook-api]:安装与 Facebook 官方页面帖子和评论 API 基础的观察者相关的依赖项
  • pip install obsei[atlassian-api]:安装与 Jira 官方 API 基础的通知器相关的依赖项
  • pip install obsei[elasticsearch]:安装与 Elasticsearch 通知器相关的依赖项
  • pip install obsei[slack-api]:安装与 Slack 官方 API 基础的通知器相关的依赖项

您还可以在单个安装命令中混合使用多个依赖项。例如,要安装 Twitter 观察者、所有分析器和 Slack 通知器,请使用以下命令:

pip install obsei[twitter-api, analyzer, slack-api]

使用方法

展开以下步骤并创建一个工作流 -

步骤 1:配置源/观察者
Twitter
from obsei.source.twitter_source import TwitterCredentials, TwitterSource, TwitterSourceConfig

# 初始化 Twitter 源配置
source_config = TwitterSourceConfig(
   keywords=["issue"], # 关键词、@用户或#话题标签
   lookup_period="1h", # 从当前时间开始的查找周期,格式:<数字><d|h|m>(天|小时|分钟)
   cred_info=TwitterCredentials(
       # 输入您的 Twitter 消费者密钥和秘密。可在 https://developer.twitter.com/en/apply-for-access 获取
       consumer_key="<twitter_consumer_key>",
       consumer_secret="<twitter_consumer_secret>",
       bearer_token='<请输入 Bearer Token>',
   )
)

# 初始化推文检索器
source = TwitterSource()
YouTube 抓取器
from obsei.source.youtube_scrapper import YoutubeScrapperSource, YoutubeScrapperConfig

# 初始化 YouTube 源配置
source_config = YoutubeScrapperConfig(
    video_url="https://www.youtube.com/watch?v=uZfns0JIlFk", # YouTube 视频 URL
    fetch_replies=True, # 获取评论回复
    max_comments=10, # 要获取的评论和回复总数
    lookup_period="1Y", # 从当前时间开始的查找周期,格式:<数字><d|h|m|M|Y>(天|小时|分钟|月|年)
)

# 初始化 YouTube 评论检索器
source = YoutubeScrapperSource()
Facebook
from obsei.source.facebook_source import FacebookCredentials, FacebookSource, FacebookSourceConfig

# 初始化 Facebook 源配置
source_config = FacebookSourceConfig(
   page_id="110844591144719", # Facebook 页面 ID,例如 Obsei 的这个页面
   lookup_period="1h", # 从当前时间开始的查找周期,格式:<数字><d|h|m>(天|小时|分钟)
   cred_info=FacebookCredentials(
       # 输入您的 Facebook 应用 ID、应用秘密和长期令牌。可在 https://developers.facebook.com/apps/ 获取
       app_id="<facebook_app_id>",
       app_secret="<facebook_app_secret>",
       long_term_token="<facebook_long_term_token>",
   )
)

# 初始化 Facebook 帖子评论检索器
source = FacebookSource()
电子邮件
from obsei.source.email_source import EmailConfig, EmailCredInfo, EmailSource

# 初始化电子邮件源配置
source_config = EmailConfig(
   # 最常用电子邮件提供商的 IMAP 服务器列表
   # https://www.systoolsgroup.com/imap/
   # 另外,如果您使用的是 Gmail 账户,请确保在您的账户中允许不太安全的应用程序 -
   # https://myaccount.google.com/lesssecureapps?pli=1
   # 同时启用 IMAP 访问 -
   # https://mail.google.com/mail/u/0/#settings/fwdandpop
   imap_server="imap.gmail.com", # 输入 IMAP 服务器
   cred_info=EmailCredInfo(
       # 输入您的电子邮件账户用户名和密码
       username="<email_username>",
       password="<email_password>"
   ),
   lookup_period="1h" # 从当前时间开始的查找周期,格式:<数字><d|h|m>(天|小时|分钟)
)

# 初始化电子邮件检索器
source = EmailSource()
Google 地图评论抓取器
from obsei.source.google_maps_reviews import OSGoogleMapsReviewsSource, OSGoogleMapsReviewsConfig

# 初始化Outscrapper Maps评论源配置
source_config = OSGoogleMapsReviewsConfig(
   # 从https://outscraper.com/获取API密钥
   api_key="<输入您的API密钥>",
   # 输入Google地图链接或地点ID
   # 例如,以下为“泰姬陵”的链接
   queries=["https://www.google.co.in/maps/place/Taj+Mahal/@27.1751496,78.0399535,17z/data=!4m5!3m4!1s0x39747121d702ff6d:0xdd2ae4803f767dde!8m2!3d27.1751448!4d78.0421422"],
   number_of_reviews=10,
)


# 初始化Outscrapper Maps评论获取器
source = OSGoogleMapsReviewsSource()
AppStore评论抓取器
from obsei.source.appstore_scrapper import AppStoreScrapperConfig, AppStoreScrapperSource

# 初始化AppStore源配置
source_config = AppStoreScrapperConfig(
   # 需要两个参数:app_id和country。
   # `app_id`可在App Store应用URL的末尾找到。
   # 例如 - https://apps.apple.com/us/app/xcode/id497799835
   # `310633997`是Xcode的app_id,`us`是国家。
   countries=["us"],
   app_id="310633997",
   lookup_period="1h" # 查找周期,从当前时间开始,格式:<数字><d|h|m>(天|小时|分钟)
)


# 初始化AppStore评论获取器
source = AppStoreScrapperSource()
Play Store评论抓取器
from obsei.source.playstore_scrapper import PlayStoreScrapperConfig, PlayStoreScrapperSource

# 初始化Play Store源配置
source_config = PlayStoreScrapperConfig(
   # 需要两个参数:package_name和country。
   # `package_name`可在Play Store应用URL的末尾找到。
   # 例如 - https://play.google.com/store/apps/details?id=com.google.android.gm&hl=en&gl=US
   # `com.google.android.gm`是Xcode的package_name,`us`是国家。
   countries=["us"],
   package_name="com.google.android.gm",
   lookup_period="1h" # 查找周期,从当前时间开始,格式:<数字><d|h|m>(天|小时|分钟)
)

# 初始化Play Store评论获取器
source = PlayStoreScrapperSource()
Reddit
from obsei.source.reddit_source import RedditConfig, RedditSource, RedditCredInfo

# 初始化Reddit源配置
source_config = RedditConfig(
   subreddits=["wallstreetbets"], # 子Reddit列表
   # Reddit账号用户名和密码
   # 也可以输入Reddit client_id、client_secret或refresh_token
   # 在https://www.reddit.com/prefs/apps创建凭据
   # 参考https://praw.readthedocs.io/en/latest/getting_started/authentication.html
   # 目前支持密码流、只读模式和已保存刷新令牌模式
   cred_info=RedditCredInfo(
       username="<reddit_username>",
       password="<reddit_password>"
   ),
   lookup_period="1h" # 查找周期,从当前时间开始,格式:<数字><d|h|m>(天|小时|分钟)
)

# 初始化Reddit获取器
source = RedditSource()
Reddit抓取器

注意:Reddit对抓取器有严格的速率限制,因此请在长时间内使用它来获取少量数据

from obsei.source.reddit_scrapper import RedditScrapperConfig, RedditScrapperSource

# 初始化Reddit抓取器源配置
source_config = RedditScrapperConfig(
   # Reddit子Reddit、搜索等RSS URL。如需正确URL,请参考以下链接:
   # 参考https://www.reddit.com/r/pathogendavid/comments/tv8m9/pathogendavids_guide_to_rss_and_reddit/
   url="https://www.reddit.com/r/wallstreetbets/comments/.rss?sort=new",
   lookup_period="1h" # 查找周期,从当前时间开始,格式:<数字><d|h|m>(天|小时|分钟)
)

# 初始化Reddit获取器
source = RedditScrapperSource()
Google新闻
from obsei.source.google_news_source import GoogleNewsConfig, GoogleNewsSource

# 初始化Google新闻源配置
source_config = GoogleNewsConfig(
   query='bitcoin',
   max_results=5,
   # 要获取全文,启用`fetch_article`标志
   # 默认情况下,Google新闻提供标题和亮点
   fetch_article=True,
   # proxy='http://127.0.0.1:8080'
)

# 初始化Google新闻获取器
source = GoogleNewsSource()
网络爬虫
from obsei.source.website_crawler_source import TrafilaturaCrawlerConfig, TrafilaturaCrawlerSource

# 初始化网站爬虫源配置
source_config = TrafilaturaCrawlerConfig(
   urls=['https://obsei.github.io/obsei/']
)

# 初始化网站文本获取器
source = TrafilaturaCrawlerSource()
Pandas数据框
import pandas as pd
from obsei.source.pandas_source import PandasSource, PandasSourceConfig

# 从CSV、Excel、SQL等来源初始化你的Pandas数据框
# 在以下示例中,我们读取包含两列的CSV文件:title和text
csv_file = "https://raw.githubusercontent.com/deepset-ai/haystack/master/tutorials/small_generator_dataset.csv"
dataframe = pd.read_csv(csv_file)

# 初始化Pandas数据源配置
sink_config = PandasSourceConfig(
   dataframe=dataframe,
   include_columns=["score"],
   text_columns=["name", "degree"],
)

# 初始化 Pandas 接收器
sink = PandasSource()
步骤 2:配置分析器

注意:要在离线模式下运行转换器,请查看【转换器离线模式】(https://huggingface.co/transformers/installation.html#offline-mode)。

一些分析器支持 GPU,可以使用device参数。 device参数的可能值列表(默认值auto):

  1. auto:如果可用则使用 GPU (cuda:0),否则使用 CPU
  2. cpu:使用 CPU
  3. cuda:{id}:使用提供的 CUDA 设备 ID 的 GPU

文本分类

文本分类:将文本分类到用户提供的类别中。

from obsei.analyzer.classification_analyzer import ClassificationAnalyzerConfig, ZeroShotClassificationAnalyzer

# 初始化分类分析器配置
# 如果添加了“positive”和“negative”标签,它也可以检测情感。
analyzer_config=ClassificationAnalyzerConfig(
   labels=["服务", "延误", "性能"],
)

# 初始化分类分析器
# 支持的模型请参考 https://huggingface.co/models?filter=zero-shot-classification
text_analyzer = ZeroShotClassificationAnalyzer(
   model_name_or_path="typeform/mobilebert-uncased-mnli",
   device="auto"
)
情感分析器

情感分析器:检测文本的情感。文本分类也可以进行情感分析,但如果您不想使用重型 NLP 模型,则可以使用资源消耗较少的基于词典的 Vader 情感检测器。

from obsei.analyzer.sentiment_analyzer import VaderSentimentAnalyzer

# Vader 不需要任何配置设置
analyzer_config=None

# 初始化 Vader 情感分析器
text_analyzer = VaderSentimentAnalyzer()
NER 分析器

NER(命名实体识别)分析器:从文本中提取信息,并将提到的命名实体分类到预定义的类别中,例如人名、组织、地点、医疗代码、时间表达式、数量、货币值、百分比等。

from obsei.analyzer.ner_analyzer import NERAnalyzer

# NER 分析器不需要配置设置
analyzer_config=None

# 初始化 NER 分析器
# 支持的模型请参考 https://huggingface.co/models?filter=token-classification
text_analyzer = NERAnalyzer(
   model_name_or_path="elastic/distilbert-base-cased-finetuned-conll03-english",
   device = "auto"
)
翻译器
from obsei.analyzer.translation_analyzer import TranslationAnalyzer

# 翻译器不需要分析器配置
analyzer_config = None

# 初始化翻译器
# 支持的模型请参考 https://huggingface.co/models?pipeline_tag=translation
analyzer = TranslationAnalyzer(
   model_name_or_path="Helsinki-NLP/opus-mt-hi-en",
   device = "auto"
)
PII 匿名化器
from obsei.analyzer.pii_analyzer import PresidioEngineConfig, PresidioModelConfig, \
   PresidioPIIAnalyzer, PresidioPIIAnalyzerConfig

# 初始化 PII 分析器的配置
analyzer_config = PresidioPIIAnalyzerConfig(
   # 是否仅返回 PII 分析结果或匿名化文本
   analyze_only=False,
   # 是否返回匿名化决策的详细信息
   return_decision_process=True
)

# 初始化 PII 分析器
analyzer = PresidioPIIAnalyzer(
   engine_config=PresidioEngineConfig(
       # 支持 spacy 和 stanza NLP 引擎
       # 更多信息请参考
       # https://microsoft.github.io/presidio/analyzer/developing_recognizers/#utilize-spacy-or-stanza
       nlp_engine_name="spacy",
       # 更新所需的 spacy 模型和语言
       models=[PresidioModelConfig(model_name="en_core_web_lg", lang_code="en")]
   )
)
虚拟分析器

虚拟分析器:什么都不做。它只是用于将输入(TextPayload)转换为输出(TextPayload),并添加用户提供的虚拟数据。

from obsei.analyzer.dummy_analyzer import DummyAnalyzer, DummyAnalyzerConfig

# 初始化虚拟分析器的配置设置
analyzer_config = DummyAnalyzerConfig()

# 初始化虚拟分析器
analyzer = DummyAnalyzer()
步骤 3:配置接收器/通知器
Slack
from obsei.sink.slack_sink import SlackSink, SlackSinkConfig

# 初始化 Slack 接收器配置
sink_config = SlackSinkConfig(
   # 提供 Slack 机器人/应用令牌
   # 更多详情请参考 https://slack.com/intl/en-de/help/articles/215770388-Create-and-regenerate-API-tokens
   slack_token="<Slack_app_token>",
   # 获取频道 ID 请参考 https://stackoverflow.com/questions/40940327/what-is-the-simplest-way-to-find-a-slack-team-id-and-a-channel-id
   channel_id="C01LRS6CT9Q"
)

# 初始化 Slack 接收器
sink = SlackSink()
Zendesk
from obsei.sink.zendesk_sink import ZendeskSink, ZendeskSinkConfig, ZendeskCredInfo

# 初始化 Zendesk 接收器配置
sink_config = ZendeskSinkConfig(
   # 提供 Zendesk 域名
   domain="zendesk.com",
   # 如果您有子域名,请提供
   subdomain=None,
   # 输入 Zendesk 用户详细信息
   cred_info=ZendeskCredInfo(
       email="<zendesk_user_email>",
       password="<zendesk_password>"
   )
)

# 初始化 Zendesk 接收器
sink = ZendeskSink()
Jira
from obsei.sink.jira_sink import JiraSink, JiraSinkConfig

# 为了测试,您可以本地启动 Jira 服务器
# 参考 https://developer.atlassian.com/server/framework/atlassian-sdk/atlas-run-standalone/

# 初始化 Jira 接收器配置
sink_config = JiraSinkConfig(
   url="http://localhost:2990/jira", # Jira 服务器 URL
    # 具有创建问题权限的用户的用户名和密码
   username="<username>",
   password="<password>",
   # 要创建的问题类型
   # 更多信息请参考 https://support.atlassian.com/jira-cloud-administration/docs/what-are-issue-types/
   issue_type={"name": "Task"},
   # 在哪个项目下创建问题
   # 更多信息请参考 https://support.atlassian.com/jira-software-cloud/docs/what-is-a-jira-software-project/
   project={"key": "CUS"},
)

# 初始化 Jira 接收器
sink = JiraSink()
ElasticSearch
from obsei.sink.elasticsearch_sink import ElasticSearchSink, ElasticSearchSinkConfig

# 为了测试,您可以使用 Docker 本地启动 Elasticsearch 服务器
# `docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.5.0`

# 初始化 Elasticsearch 接收器配置
sink_config = ElasticSearchSinkConfig(
   # Elasticsearch 服务器
   hosts="http://localhost:9200",
   # 索引名称,如果不存在则会自动创建
   index_name="test",
)

# 初始化 Elasticsearch 接收器
sink = ElasticSearchSink()
Http
from obsei.sink.http_sink import HttpSink, HttpSinkConfig

# 为了测试,您可以使用 Postman 创建一个模拟 HTTP 服务器
# 更多详情请参考 https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/setting-up-mock/

# 初始化 HTTP 接收器配置(目前仅支持 POST 请求)
sink_config = HttpSinkConfig(
   # 提供 HTTP 服务器 URL
   url="https://localhost:8080/api/path",
   # 您可以在这里添加希望随请求一起发送的头部信息
   headers={
       "Content-type": "application/json"
   }
)

# 如果需要修改或转换负载数据,可以创建转换器类
# 请参考 obsei.sink.dailyget_sink.PayloadConvertor 示例

# 初始化 HTTP 接收器
sink = HttpSink()
Pandas DataFrame
from pandas import DataFrame
from obsei.sink.pandas_sink import PandasSink, PandasSinkConfig

# 初始化 Pandas 接收器配置
sink_config = PandasSinkConfig(
   dataframe=DataFrame()
)

# 初始化 Pandas 接收器
sink = PandasSink()
Logger

这在测试和流水线的干运行中非常有用。

from obsei.sink.logger_sink import LoggerSink, LoggerSinkConfig
import logging
import sys

logger = logging.getLogger("Obsei")
logging.basicConfig(stream=sys.stdout, level=logging.INFO)

# 初始化 logger 接收器配置
sink_config = LoggerSinkConfig(
   logger=logger,
   level=logging.INFO
)

# 初始化 logger 接收器
sink = LoggerSink()
步骤 4:连接并创建工作流

source 将从选定的来源获取数据,然后将其输入到 analyzer 进行处理,我们再将 analyzer 的输出输入到 sink,以便在该接收器处收到通知。

# 如果您想记录日志,请取消注释
# import logging
# import sys
# logger = logging.getLogger(__name__)
# logging.basicConfig(stream=sys.stdout, level=logging.INFO)

# 这将从配置的来源获取信息,例如 Twitter、应用商店等
source_response_list = source.lookup(source_config)

# 如果您想记录源响应,请取消注释
# for idx, source_response in enumerate(source_response_list):
#     logger.info(f"source_response#{idx}='{source_response.__dict__}'")

# 这将使用提供的 analyzer_config 对源数据执行分析器(情感分析、分类等)
analyzer_response_list = text_analyzer.analyze_input(
    source_response_list=source_response_list,
    analyzer_config=analyzer_config
)

# 如果您想记录分析器响应,请取消注释
# for idx, an_response in enumerate(analyzer_response_list):
#    logger.info(f"analyzer_response#{idx}='{an_response.__dict__}'")

# 分析器输出被添加到 segmented_data 中
# 如果您想记录它,请取消注释
# for idx, an_response in enumerate(analyzer_response_list):
#    logger.info(f"analyzed_data#{idx}='{an_response.segmented_data.__dict__}'")

# 这将把分析后的输出发送到配置的接收器,例如 Slack、Zendesk 等
sink_response_list = sink.send_data(analyzer_response_list, sink_config)

# 如果您想记录接收器响应,请取消注释
# for sink_response in sink_response_list:
#     if sink_response is not None:
#         logger.info(f"sink_response='{sink_response}'")
步骤 5:执行工作流步骤 1 至 4 中的代码片段复制到一个 Python 文件中,例如 example.py,然后执行以下命令:
python example.py

演示

我们提供了一个基于 Streamlit 的最小化 UI,您可以用来测试 Obsei。

截图

观看UI演示视频

入门与演示视频

查看演示

注意:有时由于速率限制,Streamlit演示可能无法正常运行,请在这种情况下使用本地Docker镜像。)

要在本地测试,只需运行:

docker run -d --name obesi-ui -p 8501:8501 obsei/obsei-ui-demo

# 您可以在 http://localhost:8501 找到UI

要通过GitHub Actions轻松运行Obsei工作流(无需注册和云托管),请参考此仓库

使用Obsei的公司/项目

以下是一些使用Obsei的公司/项目(按字母顺序排列)。如需将您的公司/项目添加到列表,请提交PR或通过电子邮件联系我们。

  • Oraika:上下文理解客户反馈
  • 1Page:为会议和通话提供更好的背景信息
  • Spacepulse:空间的操作系统
  • Superblog:WordPress和Medium的极速替代方案
  • Zolve:打造超越国界的金融世界
  • Utilize:面向无固定办公场所企业的无代码应用构建器

文章

序号 标题 作者
1 基于AI的比较客户反馈分析——使用Obsei Reena Bapna
2 LinkedIn应用——用户反馈分析 Himanshu Sharma

教程

序号 工作流 Colab Binder
1 观察Google Play商店的应用评论,通过文本分类进行分析,然后通过日志记录器在控制台中显示
PlayStore评论 → 分类 → 日志记录器 Colab Colab
2 观察Google Play商店的应用评论,通过多种文本清理函数预处理文本,通过文本分类进行分析,将结果存储到Pandas DataFrame中,并保存为CSV文件到Google Drive
PlayStore评论 → 预处理 → 分类 → Pandas DataFrame → Google Drive中的CSV Colab Colab
3 观察Apple App Store的应用评论,通过多种文本清理函数预处理文本,通过文本分类进行分析,将结果存储到Pandas DataFrame中,并保存为CSV文件到Google Drive
AppStore评论 → 预处理 → 分类 → Pandas DataFrame → Google Drive中的CSV Colab Colab
4 观察Google新闻中的新闻文章,通过多种文本清理函数预处理文本,通过文本分类进行分析,同时将文本分割成小块,再用给定公式计算最终推理结果
Google新闻 → 文本清理器 → 文本分割器 → 分类 → 推理聚合器 Colab Colab
💡提示:通过Obsei处理大型文本分类

文档

有关详细的安装说明、使用方法和示例,请参阅我们的文档

支持与发布矩阵

Linux Mac Windows 备注
测试 覆盖率较低,因为难以测试第三方库
PIP 完全支持
Conda 不支持

讨论论坛

关于_Obsei_的讨论可在社区论坛上进行。

更改日志

请参阅发布以获取更改日志

安全问题

如有任何安全问题,请通过电子邮件联系我们

长期以来的观星者

长期以来的观星者

维护者

本项目由Oraika Technologies维护。Lalit PagariaGirish Patel是本项目的维护者。

许可协议

  • 版权持有者:Oraika Technologies
  • 整体采用Apache 2.0许可,您可阅读许可证文件。
  • 对于第三方组件,我们采用了多种其他次要的宽松许可或弱 copyleft 许可(如LGPL、MIT、BSD等),详情请参阅署名文件
  • 为使项目更符合商业需求,我们已将那些具有强 copyleft 许可(如GPL、AGPL等)的第三方组件排除在项目之外。

署名

没有这些开源软件,这一切都不可能实现。

贡献

首先,感谢您考虑为本软件包做出贡献,无论大小,每一份贡献都备受珍视。 请参阅我们的贡献指南行为规范

非常感谢所有贡献者!

版本历史

v0.0.152023/12/31
v0.0.142022/11/19
v0.0.132022/11/11
v0.0.122022/07/23
v0.0.112022/02/09
v0.0.102021/10/05
0.0.92021/07/03
0.0.82021/05/21
0.0.72021/03/27
0.0.62021/02/05
0.0.52021/02/03
0.0.42021/01/13
0.0.32020/12/29
v0.0.22020/12/23

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架