如何在CrewAI的crewai_tools中配置自定义嵌入模型提供者
配置CrewAI Tools自定义嵌入模型方案
针对你使用公司内部代理模型(gen_ai_hub.proxy.langchain.openai.ChatOpenAI)的场景,无需依赖预设的嵌入提供者(如openai/gpt4all),有两种可行方案:
方案一:直接传入自定义嵌入模型实例(推荐)
CrewAI工具支持直接接收LangChain兼容的BaseEmbeddings子类实例,无需通过配置字典指定provider。步骤如下:
- 确认公司内部代理提供了对应的嵌入模型类(通常是
OpenAIEmbeddings的代理版本,比如gen_ai_hub.proxy.langchain.openai.OpenAIEmbeddings) - 初始化自定义LLM和嵌入模型实例
- 直接将实例传入
DirectorySearchTool
示例代码:
from crewai_tools import DirectorySearchTool from gen_ai_hub.proxy.langchain.openai import ChatOpenAI, OpenAIEmbeddings # 初始化公司内部的LLM和嵌入模型 custom_llm = ChatOpenAI(proxy_model_name='gpt-4-32k') custom_embeddings = OpenAIEmbeddings(proxy_model_name='你的内部嵌入模型名称') # 替换为实际模型名 # 创建DirectorySearchTool并传入自定义模型实例 directory_search_tool = DirectorySearchTool( llm=custom_llm, embedder=custom_embeddings, directory_path='./你的目标目录路径' # 按需指定要搜索的目录 )
方案二:扩展Embedchain的嵌入提供者(进阶)
如果需要通过config字典方式配置,可扩展Embedchain的嵌入提供者映射:
- 定义自定义嵌入类,继承Embedchain的
BaseEmbedder:
from embedchain.embedder.base import BaseEmbedder from gen_ai_hub.proxy.langchain.openai import OpenAIEmbeddings class CustomInternalEmbedder(BaseEmbedder): def __init__(self, config): self.embedding_model = OpenAIEmbeddings(proxy_model_name=config['model']) def embed(self, texts): return self.embedding_model.embed_documents(texts) def embed_query(self, query): return self.embedding_model.embed_query(query)
- 将自定义嵌入类注册到Embedchain的提供者映射:
from embedchain.embedder import BaseEmbedder BaseEmbedder.add_provider('custom_internal', CustomInternalEmbedder)
- 配置
DirectorySearchTool时指定自定义provider:
directory_search_tool = DirectorySearchTool( config=dict( llm=dict( provider="custom", # 或直接传入自定义llm实例 config=dict( llm=custom_llm ), ), embedder=dict( provider="custom_internal", config=dict( model="你的内部嵌入模型名称" ), ) ), directory_path='./你的目标目录路径' )
注意:方案二更适合需要统一配置格式的场景,日常使用优先选择方案一,更简洁高效。
内容的提问来源于stack exchange,提问作者Rohan Prasad
相关产品推荐
相关产品推荐

