Cohere
Cohere 是一家加拿大新創公司,提供自然語言處理模型,協助企業改善人機互動。
安裝與設定
- 安裝 Python SDK
pip install langchain-cohere
取得 Cohere API 金鑰,並將其設定為環境變數 (COHERE_API_KEY
)
Cohere Langchain 整合
API | 描述 | 端點文件 | 匯入 | 使用範例 |
---|---|---|---|---|
聊天 | 建立聊天機器人 | 聊天 | from langchain_cohere import ChatCohere | cohere.ipynb |
LLM | 產生文字 | 產生 | from langchain_cohere.llms import Cohere | cohere.ipynb |
RAG 檢索器 | 連接到外部資料來源 | 聊天 + rag | from langchain.retrievers import CohereRagRetriever | cohere.ipynb |
文字嵌入 | 將字串嵌入向量 | 嵌入 | from langchain_cohere import CohereEmbeddings | cohere.ipynb |
重新排序檢索器 | 根據相關性排序字串 | 重新排序 | from langchain.retrievers.document_compressors import CohereRerank | cohere.ipynb |
快速複製範例
聊天
from langchain_cohere import ChatCohere
from langchain_core.messages import HumanMessage
chat = ChatCohere()
messages = [HumanMessage(content="knock knock")]
print(chat.invoke(messages))
API 參考:ChatCohere | HumanMessage
Cohere 聊天模型 的用法
LLM
from langchain_cohere.llms import Cohere
llm = Cohere()
print(llm.invoke("Come up with a pet name"))
API 參考: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?",
})
API 參考:TavilySearchResults | ChatCohere | create_cohere_react_agent | ChatPromptTemplate | AgentExecutor
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 檢索器 的用法
文字嵌入
from langchain_cohere import CohereEmbeddings
embeddings = CohereEmbeddings(model="embed-english-light-v3.0")
print(embeddings.embed_documents(["This is a test document."]))
API 參考:CohereEmbeddings
Cohere 文字嵌入模型 的用法
重新排序器
Cohere 重新排序器 的用法