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 资源库加星的。这个操作比较简单,大家可以看一下示例代码。
1 composio add github # Connect your Github - Run this in terminal
运行以下 Python 脚本可以使用智能体给 Github 资源库加星。
1 from openai import OpenAI 2 from composio_openai import ComposioToolSet, App, Action 3 4 openai_client = OpenAI( 5 api_key="{{OPENAIKEY}}" 6 ) 7 8 # Initialise the Composio Tool Set 9 10 composio_tool_set = ComposioToolSet()11 12 # Get GitHub tools that are pre-configured 13 actions = composio_tool_set.get_actions(14 actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER]15 )16 17 my_task = "Star a repo composiodev/composio on GitHub" 18
19 # Setup openai assistant 20 assistant_instruction = "You are a super intelligent personal assistant" 21 22 assistant = 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 30 thread = openai_client.beta.threads.create()31 32 message = openai_client.beta.threads.messages.create(33 thread_id=thread.id,34 role="user" ,35 content=my_task36 )37 38 # Execute Agent with integrations 39 run = openai_client.beta.threads.runs.create(40 thread_id=thread.id,41 assistant_id=assistant.id42 )43 44 45 # Execute Function calls 46 response_after_tool_calls = composio_tool_set.wait_and_handle_assistant_tool_calls(47 client=openai_client,48 run=run,49 thread=thread,50 )51 52 print(response_after_tool_calls)
2. Julep Julep Julep 的开发者在开发 AI 应用时,发现让大模型应用具备记忆和知识的壁垒非常高,多智能体框架中的智能体操作难以控制,整合众多开发 AI 应用的工具、技术与模型非常困难。为了解决这些问题,他们开发了 Julep ~ 这个支持状态管理的大模型应用开发平台。
Julep 提供了内置的状态管理系统,能够自动管理上下文,并使用 CozoDB 保存和提取聊天历史。它支持不同用户与智能体之间的交互,并能方便地在不同大模型框架之间进行切换。
借助 Composio,Julep 内置了 100 多种工具。此外,Julep 支持定义类似 GitHub Actions 的智能体工作流,以异步方式执行任务。
它还支持使用 Docker Compose 进行生产部署,很快还将支持 K8s。
以下是 Julep 的示例代码,大家可以简单了解一下。
1 from julep import Client 2 from pprint import pprint 3 import textwrap 4 import os 5 6 base_url = os.environ.get("JULEP_API_URL" ) 7 api_key = os.environ.get("JULEP_API_KEY" ) 8 9 client = Client(api_key=api_key, base_url=base_url)10 11 #create agent 12 agent = client.agents.create(13 name="Jessica" 14 model="gpt-4" ,15 tools=[] # Tools defined here 16 )17 #create a user 18 user = 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 session23 situation_prompt = " "" You are Jessica. You're a stuck-up Cali teenager. 24 You basically complain about everything. You live in Bel-Air, Los Angeles and 25 drag yourself to Curtis High School when necessary.26 """27 session = client.sessions.create(28 user_id=user.id, agent_id=agent.id, situation=situation_prompt29 )30 #start a conversation31 32 user_msg = "hey. what do u think of Starbucks?"33 response = 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 46 print("\n".join(textwrap.wrap(response.response[0][0].content, width=100)))47
3. Aider Aider 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 资源库的目录 4 $ cd /to/your/git/repo 5 6 # 使用 Claude 3.5 Sonnet 7 $ export ANTHROPIC_API_KEY=your-key-goes-here 8 $ aider 9 10 # 使用 GPT-4o 11 $ export OPENAI_API_KEY=your-key-goes-here12 $ aider
4. Haystack Haystack Haystack 是构建大模型应用的开源框架,可用于开发检索增强生成管道和高级搜索系统,能够智能地处理大规模文档集合。
尽管构建 AI 管道的框架很多,但如果需要将端到端的搜索管道集成到生产应用中,Haystack 是首选。
无论是 RAG、问答系统还是语义搜索,Haystack 灵活的管道组合方式让开发、维护和部署变得轻松便捷。
使用 Haystack 可以轻松地将排序器、向量存储和解析器集成到管道中,从而将原型快速转化为生产级的解决方案。
以下是使用 haystack 的一个小示例。
1 import os 2 3 from haystack import Pipeline, PredefinedPipeline 4 import urllib.request 5 6 os.environ["OPENAI_API_KEY" ] = "Your OpenAI API Key" 7 urllib.request.urlretrieve("https://www.gutenberg.org/cache/epub/7785/pg7785.txt" , "davinci.txt" ) 8 9 indexing_pipeline = Pipeline.from_template(PredefinedPipeline.INDEXING)10 indexing_pipeline.run(data={"sources" : ["davinci.txt" ]})11 12 rag_pipeline = Pipeline.from_template(PredefinedPipeline.RAG)13 14 query = "How old was he when he died?" 15 result = rag_pipeline.run(data={"prompt_builder" : {"query" :query}, "text_embedder" : {"text" : query}})16 print(result["llm" ]["replies" ][0 ])
5. Mem0 Mem0 Mem0 为大模型提供了一个智能且自我优化的长期记忆层,使个性化的 AI 体验能够贯穿于不同应用。
它能够在用户会话、交互操作和 AI 智能体之间保留信息,确保与用户交互的连续性。同时,Mem0 会根据用户的互动不断优化个性化体验。
Mem0 的 API 设计简单直观,便于无缝集成到各种应用中。此外,它还能确保不同平台和设备上的数据和行为保持一致。
6. FastEmbed FastEmbed 1 pip install fastembed2 3 # 或使用 GPU 4 5 pip install fastembed-gpu
FastEmbed 是一个轻量级的高性能 Python 库,用于嵌入生成模型。它支持多种流行的文本模型。默认的文本嵌入模型是 Flag Embedding,支持 “query” 和 “passage” 前缀的输入文本。
FastEmbed 不需要 GPU,无需下载 GB 级别的 PyTorch。嵌入生成的时间一般都很长,导致整个流程的速度很慢,FastEmbed 使用 ONNX 运行时,比 PyTorch 更快,同时可以利用数据并行来处理大型数据集。
以下是 FastEmbed 创建文档嵌入的方法。
1 from fastembed import TextEmbedding 2 from typing import List 3 4 # 文档列表示例 5 documents: 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 # 触发模型下载与初始化 11 embedding_model = TextEmbedding()12 print("The model BAAI/bge-small-en-v1.5 is ready to use." )13 14 embeddings_generator = embedding_model.embed(documents) # reminder this is a generator 15 embeddings_list = list(embedding_model.embed(documents))16 # You can also convert the generator to a list, and that to a Numpy array 17 len(embeddings_list[0 ]) # Vector of 384 dimensions
7. LiteLLM
LiteLLM 很多大模型服务商并不遵循 OpenAI SDK 的文本、图像或嵌入生成格式。LiteLLM 可以让Claude、Gemini 等生成相同格式的内容,让它们作为 OpenAI 模型的替代品。
LiteLLM 支持 100 多个大模型,让它们使用相同的输入输出格式。还可以跨多个部署(如 Azure/OpenAI)实现重试与回调逻辑并跟踪支出,为每个项目设置预算。
以下是一个简单示例。
1 from litellm import completion 2 import os 3 4 # LiteLLM 使用 OpenAI 模型 5 6 os.environ["OPENAI_API_KEY" ] = "your-API-key" 7 8 response = completion( 9 model="gpt-3.5-turbo" ,10 messages=[{ "content" : "Hello, how are you?" ,"role" : "user" }]11 )12 13 # LiteLLM 使用 Claude 模型 14 os.environ["ANTHROPIC_API_KEY" ] = "your-API-key" 15 16 response = completion(17 model="claude-2" ,18 messages=[{ "content" : "Hello, how are you?" ,"role" : "user" }]19 )
8. Camel-ai Camel-ai
Camel-ai 是一个多智能体框架,它可以构建自动化任务、世界模拟与数据生成方向的多智能体系统。
Camel-ai 旨在通过研究智能体之间的自主合作以深入了解智能体的交流规律。
在它的 Github 库中提供了两个 ChatGPT 智能体对话的演示,其中一个扮演 Python 程序员,另一个扮演股票交易员,两个智能体合作开发一个股票交易机器人,详见 https://github.com/camel-ai/camel。
另外,这里还有一个简单的 Camel 脚本。
1 from camel.messages import BaseMessage as bm 2 from camel.agents import ChatAgent 3 4 sys_msg = bm.make_assistant_message( 5 role_name='stone' , 6 content='you are a curious stone wondering about the universe.' ) 7 8 # 定义智能体 9 agent = ChatAgent(10 system_message=sys_msg,11 message_window_size=10 , # [Optional] the length of chat memory 12 )13 14 # 定义用户信息 15 usr_msg = bm.make_user_message(16 role_name='prof. Claude Shannon' ,17 content='what is information in your mind?' )18 19 # 给智能体发信息 20 response = agent.step(usr_msg)21 22 # 检查响应,仅作为演示 23 print(response.msgs[0 ].content)
9. E2B E2B 是一个为 AI 应用提供代码解释的工具,利用它可以构建 AI 代码执行应用、AI 数据分析应用、AI 代码导师应用及大模型推理应用。
E2B 代码解释器的 SDK 支持在沙盒中安全运行 AI 生成的代码,这个沙盒包含一个 Jupyter 服务器,你可以通过 SDK 进行控制。
如果你对构建这类应用感兴趣,可以访问以下网址了解更多信息:https://e2b.dev/docs/hello-world/py。
以下是其官网提供的一个简单示例。
1 from e2b_code_interpreter import CodeInterpreter2 3 with 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