特权问题
- 我是LangChain的维护者,或者直接被LangChain的维护者要求在这里创建一个问题。
问题内容
问题
为了让我们的Embeddings集成尽可能容易使用,我们需要确保它们的文档既详尽又标准化。这分为两部分:更新嵌入文档字符串和更新实际集成文档。
这需要为每个嵌入集成完成,理想情况下每个嵌入提供者有一个PR。
与更广泛的#21983和#22005相关。
文档字符串
每个Embeddings类的文档字符串应该包含下面的章节。当相关时,这些章节应该有输入和输出代码块。
要构建您正在工作的包的API文档预览,请运行(从仓库根目录):
make api_docs_clean; make api_docs_quick_preview API_PKG=openai
其中API_PKG=
应该是编辑过的包(例如community、openai、anthropic、huggingface、together、mistralai、groq、fireworks等)的父目录。这对于所有合作伙伴包来说应该相当快。
文档页面
每个Embeddings docs page都应该遵循this template。
- TODO(Erick):填充一个完整示例
您可以使用langchain-cli
快速开始一个新的聊天模型集成文档页面(从仓库根目录运行):
poetry run pip install -e libs/cli
poetry run langchain-cli integration create-doc --name "foo-bar" --name-class FooBar --component-type Embeddings --destination-dir ./docs/docs/integrations/text_embedding/
其中--name
是集成包名,去掉"langchain-"前缀,--name-class
是不带"Embedding"前缀的类名。这将创建一个带有一些自动填充字段的模板文档,位于docs/docs/integrations/text_embedding/foo_bar.ipynb。
要构建文档预览,您可以从根目录运行:
make docs_clean
make docs_build
cd docs/build/output-new
yarn
yarn start
附录
期望的Embedding类文档字符串的章节。__package_name___
:这是包的完整名称(例如,langchain-anthropic
)__ModuleName__
:这是合作伙伴的CamelCase名称(例如,Anthropic
)__MODULE_NAME__
:SCREAMING_SNAKE_CASE名称(例如,ANTHROPIC)
Y
"""__ModuleName__ embedding model integration.
# TODO: Replace with relevant packages, env vars.
Setup:
Install ``__package_name__`` and set environment variable ``__MODULE_NAME___API_KEY``.
.. code-block:: bash
pip install -U __package_name__
export __MODULE_NAME___API_KEY="your-api-key"
# TODO: Populate with relevant params.
Key init args — completion params:
model: str
Name of __ModuleName__ model to use.
# TODO: Populate with relevant params.
Key init args — client params:
api_key: Optional[SecretStr]
See full list of supported init args and their descriptions in the params section.
# TODO: Replace with relevant init params.
Instantiate:
.. code-block:: python
from __module_name__ import __ModuleName__Embeddings
embed = __ModuleName__Embeddings(
model="...",
# api_key="...",
# other params...
)
Embed single text:
.. code-block:: python
input_text = "The meaning of life is 42"
vector = embed.embed_query(input_text)
print(vector[:3])
.. code-block:: python
[-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
# TODO: Delete if token-level streaming isn't supported.
Embed multiple texts:
.. code-block:: python
input_texts = ["Document 1...", "Document 2..."]
vectors = embed.embed_documents(input_texts)
print(len(vectors))
# The first 3 coordinates for the first vector
print(vectors[0][:3])
.. code-block:: python
2
[-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
# TODO: Delete if native async isn't supported.
Async:
.. code-block:: python
vector = await embed.aembed_query(input_text)
print(vector[:3])
# multiple:
# await embed.aembed_documents(input_texts)
.. code-block:: python
[-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188]
"""
提示:如果您将模板复制并粘贴到template.txt文件中,您可以使用以下sed命令为OpenAI填写适当的值:
cat template.txt | sed 's/__package_name__/langchain_openai/g' | sed 's/__MODULE_NAME__/OPENAI/g' | sed 's/__ModuleName__/OpenAI/' | sed 's/__module_name__/langchain_openai/'
2条答案
按热度按时间9njqaruj1#
运行
poetry run langchain-cli integration create-doc --name "community" --name-class Ollama --component-type Embeddings --destination-dir ./docs/docs/integrations/text_embedding/
结果为ValueError: Unrecognized component_type='Embeddings'. Expected one of 'ChatModel', 'DocumentLoader', 'Tool'.
我遗漏了什么吗?
mitkmikd2#
尝试使用以下命令更新您的cli: