Skip to main content
Open on GitHub

Cohere

Cohere 是一家加拿大初创公司,提供自然语言处理模型,帮助公司改善人机交互。

安装与设置

  • 安装Python SDK:
pip install langchain-cohere

获取一个Cohere api key并将其设置为环境变量(COHERE_API_KEY)

Cohere langchain 集成

API描述端点文档导入示例用法
聊天构建聊天机器人chatfrom langchain_cohere import ChatCoherecohere.ipynb
LLM生成文本generatefrom langchain_cohere.llms import Coherecohere.ipynb
RAG Retriever连接到外部数据源chat + ragfrom langchain.retrievers import CohereRagRetrievercohere.ipynb
文本嵌入将字符串嵌入为向量embedfrom langchain_cohere import CohereEmbeddingscohere.ipynb
Rerank Retriever根据相关性对字符串进行排序rerankfrom langchain.retrievers.document_compressors import CohereRerankcohere.ipynb

快速复制示例

聊天

from langchain_cohere import ChatCohere
from langchain_core.messages import HumanMessage
chat = ChatCohere()
messages = [HumanMessage(content="knock knock")]
print(chat.invoke(messages))
API Reference:ChatCohere | HumanMessage

使用Cohere 聊天模型

LLM

from langchain_cohere.llms import Cohere

llm = Cohere()
print(llm.invoke("Come up with a pet name"))
API Reference:Cohere

使用Cohere(旧版)LLM模型

工具调用

from langchain_cohere import ChatCohere
from langchain_core.messages import (
HumanMessage,
ToolMessage,
)
from langchain_core.tools import tool

@tool
def magic_function(number: int) -> int:
"""Applies a magic operation to an integer

Args:
number: Number to have magic operation performed on
"""
return number + 10

def invoke_tools(tool_calls, messages):
for tool_call in tool_calls:
selected_tool = {"magic_function":magic_function}[
tool_call["name"].lower()
]
tool_output = selected_tool.invoke(tool_call["args"])
messages.append(ToolMessage(tool_output, tool_call_id=tool_call["id"]))
return messages

tools = [magic_function]

llm = ChatCohere()
llm_with_tools = llm.bind_tools(tools=tools)
messages = [
HumanMessage(
content="What is the value of magic_function(2)?"
)
]

res = llm_with_tools.invoke(messages)
while res.tool_calls:
messages.append(res)
messages = invoke_tools(res.tool_calls, messages)
res = llm_with_tools.invoke(messages)

print(res.content)

使用Cohere LLM进行工具调用可以通过将必要的工具绑定到llm来完成,如上所示。 另一种方法是支持使用ReAct代理进行多跳工具调用,如下所示。

ReAct 代理

该代理基于论文 ReAct: Synergizing Reasoning and Acting in Language Models

from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_cohere import ChatCohere, create_cohere_react_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain.agents import AgentExecutor

llm = ChatCohere()

internet_search = TavilySearchResults(max_results=4)
internet_search.name = "internet_search"
internet_search.description = "Route a user query to the internet"

prompt = ChatPromptTemplate.from_template("{input}")

agent = create_cohere_react_agent(
llm,
[internet_search],
prompt
)

agent_executor = AgentExecutor(agent=agent, tools=[internet_search], verbose=True)

agent_executor.invoke({
"input": "In what year was the company that was founded as Sound of Music added to the S&P 500?",
})

ReAct代理可以用于依次调用多个工具。

RAG 检索器

from langchain_cohere import ChatCohere
from langchain.retrievers import CohereRagRetriever
from langchain_core.documents import Document

rag = CohereRagRetriever(llm=ChatCohere())
print(rag.invoke("What is cohere ai?"))

使用Cohere RAG Retriever

文本嵌入

from langchain_cohere import CohereEmbeddings

embeddings = CohereEmbeddings(model="embed-english-light-v3.0")
print(embeddings.embed_documents(["This is a test document."]))
API Reference:CohereEmbeddings

使用Cohere 文本嵌入模型

重新排序器

使用Cohere Reranker


这个页面有帮助吗?