![中文命名实体识别(Named Entity Recognition, NER)初探](https://cdn.explinks.com/wp-content/uploads/2024/09/explink1111.png)
中文命名实体识别(Named Entity Recognition, NER)初探
在当今快速发展的技术领域,人工智能和机器学习的应用已经渗透到我们生活的方方面面。其中,推理能力作为人工智能的重要组成部分,正逐渐成为推动技术进步的关键因素之一。今天,我们将深入探讨一个名为 DeepSeek-R1 的强大推理模型,了解其安装、使用以及与 Langchain 框架的集成方法。
DeepSeek-R1 是由 DeepSeek 团队开发的开源推理模型,旨在解决复杂的逻辑推理、数学问题求解以及实时决策任务。该模型的核心优势在于其推理过程的透明性,这对于需要解释性的应用场景至关重要。通过让用户能够理解模型得出结论的逻辑和步骤,DeepSeek-R1 为更明智的决策提供了有力支持。
作为一款开源模型,DeepSeek-R1 的灵活性和可定制性使其在多个行业中具有广泛的应用前景。无论是学术研究、教育、商业还是技术领域,开发者和研究人员都可以根据自身需求对模型进行探索、修改和实施,从而开发出满足特定挑战的解决方案。
为了充分利用 DeepSeek-R1 的强大功能,我们需要安装其对应的 Chat DeepSeek R1 API。该 API 提供了与 DeepSeek-R1 模型交互的接口,使得开发者能够轻松地将其集成到自己的应用程序中。
python -m venv deepseek_env
激活虚拟环境:
deepseek_env\Scripts\activate
source deepseek_env/bin/activate
pip install chat-deepseek-api
sudo
(在 Linux 或 macOS 上)。from deepseek_api import DeepseekAPI
如果没有报错,说明安装成功。
安装完成后,接下来我们将通过一个简单的示例来了解如何使用 Chat DeepSeek R1 API。这个示例将展示如何设置环境、初始化 API 并启动聊天会话。
在开始之前,需要配置环境变量以存储必要的凭证信息。创建一个 .env
文件,并填写以下内容:
plaintext复制
DEEPSEEK_EMAIL=your_email@example.com
DEEPSEEK_PASSWORD=your_password
DEEPSEEK_DEVICE_ID=your_device_id
DEEPSEEK_COOKIES=your_cookies
DEEPSEEK_DS_POW_RESPONSE=your_ds_pow_response
以下是一个简单的 Python 脚本,展示如何与 Chat DeepSeek R1 API 进行交互:
import asyncio
import os
from deepseek_api import DeepseekAPI
from dotenv import load_dotenv
from deepseek_api.model import MessageData
load_dotenv()
async def main():
email = os.environ.get("DEEPSEEK_EMAIL")
password = os.environ.get("DEEPSEEK_PASSWORD")
device_id = os.environ.get("DEEPSEEK_DEVICE_ID")
cookies = os.environ.get("DEEPSEEK_COOKIES")
ds_pow_response = os.environ.get("DEEPSEEK_DS_POW_RESPONSE")
app = await DeepseekAPI.create(
email=email,
password=password,
save_login=True,
device_id=device_id,
custom_headers={
"cookie": cookies,
"x-ds-pow-response": ds_pow_response,
},
)
chat_session_id = await app.new_chat()
print(f"Starting chat session with id: {chat_session_id}")
message_id = None
async for chunk in app.chat(
message="who are you", id=chat_session_id, parent_message_id=message_id
):
chunk_data: MessageData = chunk
print(chunk_data.choices[0].delta.content, end="")
cur_message_id = chunk.get_message_id()
if not cur_message_id:
cur_message_id = 0
if not message_id or cur_message_id > message_id:
message_id = cur_message_id
print()
await app.close()
if __name__ == "__main__":
asyncio.run(main())
dotenv
包加载 .env
文件中的凭证信息,确保敏感信息的安全管理。DeepseekAPI.create()
方法异步初始化 API,使用凭证进行身份验证。new_chat()
方法创建新的聊天会话,并获取会话 ID。app.chat()
方法向 API 发送消息,并异步处理响应。通过这个示例,你可以快速掌握 Chat DeepSeek R1 API 的基本使用方法,为进一步的应用开发奠定基础。
为了进一步扩展 DeepSeek-R1 的应用场景,我们可以将其与 Langchain 框架进行集成。Langchain 是一个用于构建语言模型的强大框架,通过集成可以实现更复杂的推理和交互功能。
.env
文件中已正确填写 DeepSeek 的凭证信息:DEEPSEEK_EMAIL=your_email
DEEPSEEK_PASSWORD=your_password
DEEPSEEK_DEVICE_ID=your_device_id
DEEPSEEK_COOKIES=your_cookies
DEEPSEEK_DS_POW_RESPONSE=your_ds_pow_response
import asyncio
import os
from typing import Any, AsyncIterator, Dict, Iterator, List, Optional
from dotenv import load_dotenv
from langchain_core.callbacks.manager import CallbackManagerForLLMRun
from langchain_core.language_models.llms import LLM
from langchain_core.outputs import GenerationChunk
from chat_deepseek_api.model import MessageData
from chat_deepseek_api import DeepseekAPI
class ChatDeepSeekApiLLM(LLM):
email: str = None
password: str = None
device_id: str = None
cookies: str = None
ds_pow_response: str = None
app: DeepseekAPI = None
chat_session_id: str = None
message_id: int = 0
def __init__(self, email: str, password: str, device_id: str, cookies: str, ds_pow_response: str):
super(ChatDeepSeekApiLLM, self).__init__()
self.email = email
self.password = password
self.device_id = device_id
self.cookies = cookies
self.ds_pow_response = ds_pow_response
def _call(self, prompt: str, stop: Optional[List[str]] = None, run_manager: Optional[CallbackManagerForLLMRun] = None, **kwargs: Any) -> str:
if stop is not None:
raise ValueError("stop kwargs are not permitted.")
self._verify_config()
for message in self._generate_message(prompt):
chunk = GenerationChunk(text=message)
if run_manager:
run_manager.on_llm_new_token(chunk.text, chunk=chunk)
return "".join([chunk for chunk in self._generate_message(prompt)])
async def _async_generate_message(self, prompt: str) -> AsyncIterator[str]:
if not self.app:
self.app = await DeepseekAPI.create(
email=self.email,
password=self.password,
save_login=True,
device_id=self.device_id,
custom_headers={
"cookie": self.cookies,
"x-ds-pow-response": self.ds_pow_response,
},
)
if not self.chat_session_id:
self.chat_session_id = await self.app.new_chat()
self.message_id = None
async for chunk in self.app.chat(
message=prompt, id=self.chat_session_id, parent_message_id=self.message_id
):
chunk_data: MessageData = chunk
yield chunk_data.choices[0].delta.content
cur_message_id = chunk.get_message_id()
if not cur_message_id:
cur_message_id = 0
if not self.message_id or cur_message_id > self.message_id:
self.message_id = cur_message_id
def _close(self) -> None:
if self.app:
loop = asyncio.get_event_loop()
loop.run_until_complete(self.app.close())
def _verify_config(self) -> None:
if not self.email:
raise ValueError("Email is required.")
if not self.password:
raise ValueError("Password is required.")
if not self.device_id:
raise ValueError("Device ID is required.")
if not self.cookies:
raise ValueError("Cookies are required.")
if not self.ds_pow_response:
raise ValueError("DS POW Response is required.")
if __name__ == "__main__":
load_dotenv()
email = os.environ.get("DEEPSEEK_EMAIL")
password = os.environ.get("DEEPSEEK_PASSWORD")
device_id = os.environ.get("DEEPSEEK_DEVICE_ID")
cookies = os.environ.get("DEEPSEEK_COOKIES")
ds_pow_response = os.environ.get("DEEPSEEK_DS_POW_RESPONSE")
model = ChatDeepSeekApiLLM(
email=email,
password=password,
device_id=device_id,
cookies=cookies,
ds_pow_response=ds_pow_response,
)
result = model.invoke("who are you")
print(result)
result = model.invoke("what can you do")
print(result)
model._close()
通过这种集成方式,你可以利用 Langchain 构建强大的应用程序,充分发挥 DeepSeek-R1 的推理能力,提升应用程序的功能性和响应性。
DeepSeek-R1 作为一款强大的推理模型,其透明性和可定制性使其在多个领域具有广泛的应用潜力。通过安装 Chat DeepSeek R1 API,我们可以轻松地将其集成到各种应用程序中。此外,与 Langchain 框架的结合进一步扩展了其应用场景,使得开发者能够构建更加智能和高效的交互式应用。
无论你是开发者、研究人员还是技术爱好者,DeepSeek-R1 都是一个值得探索的工具。它不仅能够帮助你解决复杂的推理任务,还能为你的项目带来新的可能性。希望本文的介绍能够帮助你更好地理解和使用 DeepSeek-R1,并激发你探索更多创新应用的灵感。