此概念验证的目的是评估创建一个多功能、可靠且直观的聊天机器人所需的条件,以便用户参与 Alkemio 相关主题。该项目无法按原样部署,但应作为展示生成式人工智能功能的宝贵输入,并帮助评估将此功能嵌入到平台中所需的条件。
大型语言模型(LLM)在最近一段时间内有了显着的改进,但并不普遍且性能不佳。这为它们在不同领域的使用提供了很多可能性。 OpenAI 是最著名的法学硕士商业提供商,但法学硕士模型有很多选择,无论是商业的还是开源的。虽然这提供了选择,但也带来了提供商锁定的风险。
法学硕士只是生成式人工智能解决方案实际实施所需的组成部分之一,许多其他“构建模块”也是必要的。 Langchain 是一个流行的开源库,它提供这些构建块并创建抽象层,从而实现提供商的独立性。
对于大多数组织来说,培训法学硕士的费用昂贵得令人望而却步,但对于大多数实际实施来说,需要合并组织特定的数据。一种常见的方法是将用户问题的特定上下文添加到提交给 LLM 的提示中。这带来了挑战,因为 LLM 通常只允许有限大小的提示(通常约为 4k 个令牌)。因此,提供相关的上下文信息非常重要,并且需要执行以下操作:
该项目受到许多文章的启发,但理论性和实践性都很强。代码库的重要部分来自使用 LangChain 项目构建 AWS 架构完善的聊天机器人。
这些项目已通过 RabbitMQ RPC 实现为基于容器的微服务。有一个 RabbitMQ 队列:
alkemio-virtual-contributor-engine-guidance
- 用于向微服务提交请求的队列请求负载由具有以下结构的 json 组成(查询示例):
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
操作类型有:
ingest
:从 Alkemio 基金会网站(通过 Github 源)收集数据并使用 OpenAI Ada 文本模型嵌入,不添加请求数据。reset
:重置正在进行的聊天的聊天记录,需要userId。query
:在聊天序列中发布下一个问题,请参阅 exmaple响应发布在自动生成的、独占的、未命名的队列中。
该模型的交互语言有一个实现草案(这需要重大改进)。如果未指定语言代码,则将假定为英语。选项包括:“EN”:“英语”、“US”:“英语”、“UK”:“英语”、“FR”:“法语”、“DE”:“德语”、“ES”:“西班牙语” , 'NL': '荷兰语', 'BG': '保加利亚语', 'UA': '乌克兰语'
*注意:https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api 有一个早期(过时)的 RESTful 实现
以下命令可用于从 Docker CLI 构建容器(默认架构为 amd64,因此--build-arg ARCHITECTURE=arm64
对于 amd64 构建): docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
Dockerfile 有一些不言自明的配置参数。
可以使用以下命令从 Docker CLI 启动容器: docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
其中.env
基于.azure-template.env
或者使用docker-compose up -d
。
和:
AZURE_OPENAI_API_KEY
:有效的 OpenAI API 密钥OPENAI_API_VERSION
:有效的 Azure OpenAI 版本。截至撰写本文时,最新日期为2023-05-15
AZURE_OPENAI_ENDPOINT
:有效的 Azure OpenAI 基本 URL,例如https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
:RabbitMQ 主机名RABBITMQ_USER
:RabbitMQ 用户RABBITMQ_PASSWORD
:RabbitMQ 密码AI_MODEL_TEMPERATURE
:模型的temperature
,使用值在 0 到 1 之间。1 表示更随机的答案,更接近 0 - 更严格的答案LLM_DEPLOYMENT_NAME
:Azure 中的 AI gpt 模型部署名称EMBEDDINGS_DEPLOYMENT_NAME
:Azure 中的 AI 嵌入模型部署名称AI_SOURCE_WEBSITE
:包含源数据的基金会网站的 URL(仅供参考)AI_SOURCE_WEBSITE2
:包含源数据的欢迎网站的 URL(仅供参考)AI_LOCAL_PATH
:存储数据的本地文件路径AI_WEBSITE_REPO
:包含基金会网站源数据的 Git 存储库的 url,基于 Hugo - 不带 httpsAI_WEBSITE_REPO2
:包含欢迎网站源数据的 Git 存储库的 url,基于 Hugo - 不带 httpsAI_GITHUB_USER
:用于克隆网站存储库的 Github 用户AI_GITHUB_PAT
:用于克隆网站存储库的个人访问令牌LANGCHAIN_TRACING_V2
:启用 Langchain 跟踪LANGCHAIN_ENDPOINT
:Langchain 跟踪端点(例如“https://api.smith.langchain.com”)LANGCHAIN_API_KEY
: Langchain 追踪 API 密钥LANGCHAIN_PROJECT
:Langchain追踪项目名称(例如“virtual-contributor-engine-guidance”)您可以在.azure-template.env
中找到示例值。配置它们并使用更新的设置创建.env
文件。
该项目需要安装 Python & Poetry。最小版本依赖项可以在pyproject.toml
中找到。安装 Python 和 Poetry 后:
poetry install
poetry run python virtual_contributor_engine_guidance.py
运行该项目至少需要 Python 3.11,并需要安装 Go 和 Hugo 来创建网站的本地版本。有关安装说明,请参阅 Go 和 Hugo 文档(仅当在容器外部运行时)
以下任务仍然悬而未决: