【Python】先睹为快,9 个 Python 程序员还不知道的 AI 大模型开源库

共 13508字,需浏览 28分钟

 ·

2024-07-31 12:00

AI 大行其道,Python 作为 AI 开发最炙手可热的编程语言,也水涨船高。

各位作为 Python 开发者怎么能不了解一下 Python 相关的 AI 开源库呢?

以下我就为大家列出了一些目前还鲜为人知的 AI 开源库,有几个还真不错哦。

1. composio

composio
  • 网址:https://github.com/ComposioHQ/composio

  • 安装:pip install composio-core

  • 添加 GitHub 集成:composio add github

Composio 是为不同工具集构建工作流的 AI 智能体。它支持 100 多种工具,包括谷歌应用、Excel、Github、GitLab、Redis、Notion、Slack 等应用,支持如点击、输入、复制、粘贴等系统操作,还支持智能搜索、截图、下载、上传等浏览器操作。

Composio 能够实现鉴权管理,将智能体与不同工具整合在一起,并执行各种操作。它支持多种鉴权方式,包括 OAuth1.0/OAuth2.0、ApiKey 和基本验证等方式。

此外,Composio 还兼容 OpenAI、Claude、LlamaIndex、Langchain 和 Gemini 等多种智能体框架。

在它的官方文档中提供了设置投资分析师智能体的示例,因为比较复杂,就不在本文中展示了,有兴趣的朋友可以看一下。网址在这里,https://docs.composio.dev/guides/python/investment-analyst

在其 Github 说明文件里还有一个示例,创建智能体为 Github 资源库加星的。这个操作比较简单,大家可以看一下示例代码。

1composio add github # Connect your Github - Run this in terminal

运行以下 Python 脚本可以使用智能体给 Github 资源库加星。

 1from openai import OpenAI
2from composio_openai import ComposioToolSet, App, Action
3
4openai_client = OpenAI(
5    api_key="{{OPENAIKEY}}"
6)
7
8# Initialise the Composio Tool Set
9
10composio_tool_set = ComposioToolSet()
11
12# Get GitHub tools that are pre-configured
13actions = composio_tool_set.get_actions(
14    actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER]
15)
16
17my_task = "Star a repo composiodev/composio on GitHub"
18
19# Setup openai assistant
20assistant_instruction = "You are a super intelligent personal assistant"
21
22assistant = openai_client.beta.assistants.create(
23    name="Personal Assistant",
24    instructions=assistant_instruction,
25    model="gpt-4-turbo",
26    tools=actions,
27)
28
29# create a thread
30thread = openai_client.beta.threads.create()
31
32message = openai_client.beta.threads.messages.create(
33    thread_id=thread.id,
34    role="user",
35    content=my_task
36)
37
38# Execute Agent with integrations
39run = openai_client.beta.threads.runs.create(
40    thread_id=thread.id,
41    assistant_id=assistant.id
42)
43
44
45# Execute Function calls
46response_after_tool_calls = composio_tool_set.wait_and_handle_assistant_tool_calls(
47    client=openai_client,
48    run=run,
49    thread=thread,
50)
51
52print(response_after_tool_calls)

2. Julep

Julep
  • 网址:https://docs.julep.ai/

  • 安装:pip install julep

Julep 的开发者在开发 AI 应用时,发现让大模型应用具备记忆和知识的壁垒非常高,多智能体框架中的智能体操作难以控制,整合众多开发 AI 应用的工具、技术与模型非常困难。为了解决这些问题,他们开发了 Julep ~ 这个支持状态管理的大模型应用开发平台。

Julep 提供了内置的状态管理系统,能够自动管理上下文,并使用 CozoDB 保存和提取聊天历史。它支持不同用户与智能体之间的交互,并能方便地在不同大模型框架之间进行切换。

借助 Composio,Julep 内置了 100 多种工具。此外,Julep 支持定义类似 GitHub Actions 的智能体工作流,以异步方式执行任务。

它还支持使用 Docker Compose 进行生产部署,很快还将支持 K8s。

以下是 Julep 的示例代码,大家可以简单了解一下。

 1from julep import Client
2from pprint import pprint
3import textwrap
4import os
5
6base_url = os.environ.get("JULEP_API_URL")
7api_key = os.environ.get("JULEP_API_KEY")
8
9client = Client(api_key=api_key, base_url=base_url)
10
11#create agent
12agent = client.agents.create(
13    name="Jessica"
14    model="gpt-4",
15    tools=[]    # Tools defined here
16)
17#create a user
18user = client.users.create(
19    name="Anon",
20    about="Average nerdy tech bro/girl spending 8 hours a day on a laptop,
21)
22#create a session
23situation_prompt = "
""You are Jessica. You're a stuck-up Cali teenager. 
24You basically complain about everything. You live in Bel-Air, Los Angeles and 
25drag yourself to Curtis High School when necessary.
26"""
27session = client.sessions.create(
28    user_id=user.id, agent_id=agent.id, situation=situation_prompt
29)
30#start a conversation
31
32user_msg = "hey. what do u think of Starbucks?"
33response = client.sessions.chat(
34    session_id=session.id,
35    messages=[
36        {
37            "role": "user",
38            "content": user_msg,
39            "name": "Anon",
40        }
41    ],
42    recall=True,
43    remember=True,
44)
45
46print("\n".join(textwrap.wrap(response.response[0][0].content, width=100)))
47

3. Aider

Aider
  • 网址:https://aider.chat/docs/install.html

Aider 是一款 AI 结对编程辅助工具,支持启动新项目、编辑文件,并与现有的 GitHub 资源库集成。

Aider 能够调用 GPT-4o、Claude 3.5 Sonnet、DeepSeek Coder、Llama 70b 等大型语言模型。

它可以进行代码测试、解决 Bug、重构代码,甚至更新文档,并支持 Python、JavaScript、TypeScript、PHP、HTML、CSS 等编程语言。

你可以在代码编辑器中边编写代码边与 Aider 聊天,让它提供建议,甚至使用语音编程功能。

  • 安装:

 1$ pip install aider-chat
2
3# 进入 git 资源库的目录
4cd /to/your/git/repo
5
6# 使用 Claude 3.5 Sonnet
7export ANTHROPIC_API_KEY=your-key-goes-here
8$ aider
9
10# 使用 GPT-4o
11export OPENAI_API_KEY=your-key-goes-here
12$ aider 

4. Haystack

Haystack
  • 网址:https://aider.chat/docs/install.html

  • 安装:pip install haystack-ai

Haystack 是构建大模型应用的开源框架,可用于开发检索增强生成管道和高级搜索系统,能够智能地处理大规模文档集合。

尽管构建 AI 管道的框架很多,但如果需要将端到端的搜索管道集成到生产应用中,Haystack 是首选。

无论是 RAG、问答系统还是语义搜索,Haystack 灵活的管道组合方式让开发、维护和部署变得轻松便捷。

使用 Haystack 可以轻松地将排序器、向量存储和解析器集成到管道中,从而将原型快速转化为生产级的解决方案。

以下是使用 haystack 的一个小示例。

 1import os
2
3from haystack import Pipeline, PredefinedPipeline
4import urllib.request
5
6os.environ["OPENAI_API_KEY"] = "Your OpenAI API Key"
7urllib.request.urlretrieve("https://www.gutenberg.org/cache/epub/7785/pg7785.txt""davinci.txt")  
8
9indexing_pipeline =  Pipeline.from_template(PredefinedPipeline.INDEXING)
10indexing_pipeline.run(data={"sources": ["davinci.txt"]})
11
12rag_pipeline =  Pipeline.from_template(PredefinedPipeline.RAG)
13
14query = "How old was he when he died?"
15result = rag_pipeline.run(data={"prompt_builder": {"query":query}, "text_embedder": {"text": query}})
16print(result["llm"]["replies"][0])

5. Mem0

Mem0
  • 网址:https://github.com/mem0ai/mem0

  • 安装:pip install mem0ai

Mem0 为大模型提供了一个智能且自我优化的长期记忆层,使个性化的 AI 体验能够贯穿于不同应用。

它能够在用户会话、交互操作和 AI 智能体之间保留信息,确保与用户交互的连续性。同时,Mem0 会根据用户的互动不断优化个性化体验。

Mem0 的 API 设计简单直观,便于无缝集成到各种应用中。此外,它还能确保不同平台和设备上的数据和行为保持一致。

6. FastEmbed

FastEmbed
  • 网址:https://github.com/mem0ai/mem0

  • 安装:

1pip install fastembed
2
3# 或使用 GPU
4
5pip install fastembed-gpu

FastEmbed 是一个轻量级的高性能 Python 库,用于嵌入生成模型。它支持多种流行的文本模型。默认的文本嵌入模型是 Flag Embedding,支持 “query” 和 “passage” 前缀的输入文本。

FastEmbed 不需要 GPU,无需下载 GB 级别的 PyTorch。嵌入生成的时间一般都很长,导致整个流程的速度很慢,FastEmbed 使用 ONNX 运行时,比 PyTorch 更快,同时可以利用数据并行来处理大型数据集。

以下是 FastEmbed  创建文档嵌入的方法。

 1from fastembed import TextEmbedding
2from typing import List
3
4# 文档列表示例
5documents: List[str] = [
6    "This is built to be faster and lighter than other embedding libraries, e.g. Transformers, Sentence-Transformers, etc.",
7    "FastEmbed is supported by and maintained by Quadrant."
8]
9
10# 触发模型下载与初始化
11embedding_model = TextEmbedding()
12print("The model BAAI/bge-small-en-v1.5 is ready to use.")
13
14embeddings_generator = embedding_model.embed(documents)  # reminder this is a generator
15embeddings_list = list(embedding_model.embed(documents))
16 # You can also convert the generator to a list, and that to a Numpy array
17len(embeddings_list[0]) # Vector of 384 dimensions

7. LiteLLM

LiteLLM
  • 网址:https://docs.litellm.ai/docs/

  • 安装:pip install litellm

很多大模型服务商并不遵循 OpenAI SDK 的文本、图像或嵌入生成格式。LiteLLM 可以让Claude、Gemini 等生成相同格式的内容,让它们作为 OpenAI 模型的替代品。

LiteLLM  支持 100 多个大模型,让它们使用相同的输入输出格式。还可以跨多个部署(如 Azure/OpenAI)实现重试与回调逻辑并跟踪支出,为每个项目设置预算。

以下是一个简单示例。

 1from litellm import completion
2import os
3
4# LiteLLM 使用 OpenAI 模型
5
6os.environ["OPENAI_API_KEY"] = "your-API-key"
7
8response = completion(
9  model="gpt-3.5-turbo",
10  messages=[{ "content""Hello, how are you?","role""user"}]
11)
12
13# LiteLLM 使用 Claude 模型
14os.environ["ANTHROPIC_API_KEY"] = "your-API-key"
15
16response = completion(
17  model="claude-2",
18  messages=[{ "content""Hello, how are you?","role""user"}]
19)

8. Camel-ai

Camel-ai
  • 网址:https://docs.litellm.ai/docs/

  • 安装:pip install camel-ai

Camel-ai 是一个多智能体框架,它可以构建自动化任务、世界模拟与数据生成方向的多智能体系统。

Camel-ai 旨在通过研究智能体之间的自主合作以深入了解智能体的交流规律。

在它的 Github 库中提供了两个 ChatGPT 智能体对话的演示,其中一个扮演 Python 程序员,另一个扮演股票交易员,两个智能体合作开发一个股票交易机器人,详见 https://github.com/camel-ai/camel。

另外,这里还有一个简单的 Camel 脚本。

 1from camel.messages import BaseMessage as bm
2from camel.agents import ChatAgent
3
4sys_msg = bm.make_assistant_message(
5    role_name='stone',
6    content='you are a curious stone wondering about the universe.')
7
8# 定义智能体 
9agent = ChatAgent(
10    system_message=sys_msg,
11    message_window_size=10,    # [Optional] the length of chat memory
12    )
13
14# 定义用户信息
15usr_msg = bm.make_user_message(
16    role_name='prof. Claude Shannon',
17    content='what is information in your mind?')
18
19# 给智能体发信息
20response = agent.step(usr_msg)
21
22# 检查响应,仅作为演示
23print(response.msgs[0].content)

9. E2B

  • 网址:https://e2b.dev/

  • 安装:pip install e2b_code_interpreter

E2B 是一个为 AI 应用提供代码解释的工具,利用它可以构建 AI 代码执行应用、AI 数据分析应用、AI 代码导师应用及大模型推理应用。

E2B 代码解释器的 SDK 支持在沙盒中安全运行 AI 生成的代码,这个沙盒包含一个 Jupyter 服务器,你可以通过 SDK 进行控制。

如果你对构建这类应用感兴趣,可以访问以下网址了解更多信息:https://e2b.dev/docs/hello-world/py。

以下是其官网提供的一个简单示例。

1from e2b_code_interpreter import CodeInterpreter
2
3with CodeInterpreter() as sandbox:
4    sandbox.notebook.exec_cell("x = 1")
5
6    execution = sandbox.notebook.exec_cell("x+=1; x")
7    print(execution.text)  # outputs 2
   
      
          
             
往期精彩回顾




  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961



浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报