langchain_zhipu


Namelangchain_zhipu JSON
Version 4.1.8 PyPI version JSON
download
home_pagehttps://github.com/arcstep/langchain_zhipuai
Summary将智谱AI集成到LangChain
upload_time2024-07-16 05:54:48
maintainerNone
docs_urlNone
authorarcstep
requires_python<4.0,>=3.9
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 为什么要开发这个包?

[![PyPI version](https://img.shields.io/pypi/v/langchain_zhipu.svg)](https://pypi.org/project/langchain_zhipu/)

为了方便在 langchain 中使用,langchain_zhipu 直接使用官方 HTTP 接口实现,并避免了如下的现存问题:

- 问题 1: 智谱 AI 的官方 SDK 使用了 pydantic v2,这与 langchain(尤其是 langserve)不兼容
- 问题 2: langchain.community 的国内包更新不及时,无法在 langchain 的 LCEL 语法中使用

# 能力支持

## 已支持全部 langchain 接口

1. invoke
2. ainvoke
3. batch
4. abatch
5. stream
6. astream
7. astream_events
8. asteram_log

## 已支持模型能力

- 已支持生成模型:"glm-3-turbo", "glm-4", "glm-4v"
- 已支持向量模型:"embedding-2"
- 已支持官方知识库管理能力:对知识库、文档、应用做增删改查
- 已支持基于官方知识库的大模型对话
- 支持工具回调:普通工具,以及在线知识库和网络搜索
- 支持智能体
- 支持 RAG

# 使用

## 配置

可以将申请到的 `API_KEY` 配置到环境变量 `ZHIPUAI_API_KEY`。

建议使用 `.env` 文件来管理环境变量,这需要安装 `python_dotenv` 包:

```bash
pip install python_dotenv
```

你的 .env 文件:

```
ZHIPUAI_API_KEY="你的KEY"
```

然后在你的代码目录中:

```python
# 加载 .env 到环境变量
import os
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv(), override=True)
```

## 安装 langchain_zhipu

```bash
pip install langchain langchain_zhipu
```

其中,langchain 只要 `v0.1.0` ,而 langchain_zhipu 最好安装最新的 4.1.x 版本。

## 代码例子

- [基本用法 usage.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/usage.ipynb)
- [智能体 agent.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/agent.ipynb)
- [向量模型 embedding.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/embedding.ipynb)
- [模型统计 tokens.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/tokens.ipynb)
- [知识库 knowledge.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/knowledge.ipynb)
- [知识库应用 knowledge_app.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/knowledge_app.ipynb)
- [textlong+智谱](https://github.com/arcstep/textlong/blob/main/notes/00%20howto/06%20%E6%99%BA%E8%B0%B1.ipynb)

---

**官方接口指南** 智谱[开放平台](https://open.bigmodel.cn/dev/api)

## 简单的例子

```python
from langchain_zhipu import ChatZhipuAI
llm = ChatZhipuAI()

# invoke
llm.invoke("hi")

# stream
for s in llm.stream("hi"):
  print(s)

# astream
async for s in llm.astream("hi"):
  print(s)
```

## retrieval 工具

```python
from langchain_zhipu import convert_to_retrieval_tool
llm.bind(tools=[convert_to_retrieval_tool(knowledge_id="1772979648448397312")]).invoke("你知道马冬梅住哪里吗?")
```

## web_search 工具

```python
from langchain_zhipu import convert_to_web_search_tool
llm.bind(tools=[convert_to_web_search_tool(search_query="周星驰电影")]).invoke("哪部电影好看?")
```

## function 工具

```python
from langchain_core.utils.function_calling import convert_to_openai_tool
from langchain.tools import tool

@tool
def search(query: str) -> str:
    """查询 langchan 资料; args: query 类型为字符串,描述用户的问题."""
    return "langchain_chinese 是一个为中国大模型优化的langchain模块"

llm.bind(tools=[convert_to_openai_tool(search)]).invoke("langchain_chinese是啥?请查询本地资料回答。")
```

## 使用 glm-4v

```python
from langchain_zhipu import ChatZhipuAI
from langchain_core.prompts import ChatPromptTemplate

llm4v = ChatZhipuAI(model="glm-4v")

prompt = ChatPromptTemplate.from_messages([
    ("human", [
          {
            "type": "text",
            "text": "图里有什么"
          },
          {
            "type": "image_url",
            "image_url": {
                "url" : "https://img1.baidu.com/it/u=1369931113,3388870256&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1703696400&t=f3028c7a1dca43a080aeb8239f09cc2f"
            }
          }
        ]),
])

(prompt|llm4v).invoke({})
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/arcstep/langchain_zhipuai",
    "name": "langchain_zhipu",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": null,
    "author": "arcstep",
    "author_email": "43801@qq.com",
    "download_url": "https://files.pythonhosted.org/packages/9b/3f/2e27b1e7d675ec34461cea2c2309ea52c1122eafc921c0da8742fd6beaab/langchain_zhipu-4.1.8.tar.gz",
    "platform": null,
    "description": "# \u4e3a\u4ec0\u4e48\u8981\u5f00\u53d1\u8fd9\u4e2a\u5305\uff1f\n\n[![PyPI version](https://img.shields.io/pypi/v/langchain_zhipu.svg)](https://pypi.org/project/langchain_zhipu/)\n\n\u4e3a\u4e86\u65b9\u4fbf\u5728 langchain \u4e2d\u4f7f\u7528\uff0clangchain_zhipu \u76f4\u63a5\u4f7f\u7528\u5b98\u65b9 HTTP \u63a5\u53e3\u5b9e\u73b0\uff0c\u5e76\u907f\u514d\u4e86\u5982\u4e0b\u7684\u73b0\u5b58\u95ee\u9898\uff1a\n\n- \u95ee\u9898 1: \u667a\u8c31 AI \u7684\u5b98\u65b9 SDK \u4f7f\u7528\u4e86 pydantic v2\uff0c\u8fd9\u4e0e langchain\uff08\u5c24\u5176\u662f langserve\uff09\u4e0d\u517c\u5bb9\n- \u95ee\u9898 2: langchain.community \u7684\u56fd\u5185\u5305\u66f4\u65b0\u4e0d\u53ca\u65f6\uff0c\u65e0\u6cd5\u5728 langchain \u7684 LCEL \u8bed\u6cd5\u4e2d\u4f7f\u7528\n\n# \u80fd\u529b\u652f\u6301\n\n## \u5df2\u652f\u6301\u5168\u90e8 langchain \u63a5\u53e3\n\n1. invoke\n2. ainvoke\n3. batch\n4. abatch\n5. stream\n6. astream\n7. astream_events\n8. asteram_log\n\n## \u5df2\u652f\u6301\u6a21\u578b\u80fd\u529b\n\n- \u5df2\u652f\u6301\u751f\u6210\u6a21\u578b\uff1a\"glm-3-turbo\", \"glm-4\", \"glm-4v\"\n- \u5df2\u652f\u6301\u5411\u91cf\u6a21\u578b\uff1a\"embedding-2\"\n- \u5df2\u652f\u6301\u5b98\u65b9\u77e5\u8bc6\u5e93\u7ba1\u7406\u80fd\u529b\uff1a\u5bf9\u77e5\u8bc6\u5e93\u3001\u6587\u6863\u3001\u5e94\u7528\u505a\u589e\u5220\u6539\u67e5\n- \u5df2\u652f\u6301\u57fa\u4e8e\u5b98\u65b9\u77e5\u8bc6\u5e93\u7684\u5927\u6a21\u578b\u5bf9\u8bdd\n- \u652f\u6301\u5de5\u5177\u56de\u8c03\uff1a\u666e\u901a\u5de5\u5177\uff0c\u4ee5\u53ca\u5728\u7ebf\u77e5\u8bc6\u5e93\u548c\u7f51\u7edc\u641c\u7d22\n- \u652f\u6301\u667a\u80fd\u4f53\n- \u652f\u6301 RAG\n\n# \u4f7f\u7528\n\n## \u914d\u7f6e\n\n\u53ef\u4ee5\u5c06\u7533\u8bf7\u5230\u7684 `API_KEY` \u914d\u7f6e\u5230\u73af\u5883\u53d8\u91cf `ZHIPUAI_API_KEY`\u3002\n\n\u5efa\u8bae\u4f7f\u7528 `.env` \u6587\u4ef6\u6765\u7ba1\u7406\u73af\u5883\u53d8\u91cf\uff0c\u8fd9\u9700\u8981\u5b89\u88c5 `python_dotenv` \u5305\uff1a\n\n```bash\npip install python_dotenv\n```\n\n\u4f60\u7684 .env \u6587\u4ef6\uff1a\n\n```\nZHIPUAI_API_KEY=\"\u4f60\u7684KEY\"\n```\n\n\u7136\u540e\u5728\u4f60\u7684\u4ee3\u7801\u76ee\u5f55\u4e2d\uff1a\n\n```python\n# \u52a0\u8f7d .env \u5230\u73af\u5883\u53d8\u91cf\nimport os\nfrom dotenv import load_dotenv, find_dotenv\nload_dotenv(find_dotenv(), override=True)\n```\n\n## \u5b89\u88c5 langchain_zhipu\n\n```bash\npip install langchain langchain_zhipu\n```\n\n\u5176\u4e2d\uff0clangchain \u53ea\u8981 `v0.1.0` \uff0c\u800c langchain_zhipu \u6700\u597d\u5b89\u88c5\u6700\u65b0\u7684 4.1.x \u7248\u672c\u3002\n\n## \u4ee3\u7801\u4f8b\u5b50\n\n- [\u57fa\u672c\u7528\u6cd5 usage.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/usage.ipynb)\n- [\u667a\u80fd\u4f53 agent.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/agent.ipynb)\n- [\u5411\u91cf\u6a21\u578b embedding.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/embedding.ipynb)\n- [\u6a21\u578b\u7edf\u8ba1 tokens.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/tokens.ipynb)\n- [\u77e5\u8bc6\u5e93 knowledge.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/knowledge.ipynb)\n- [\u77e5\u8bc6\u5e93\u5e94\u7528 knowledge_app.ipynb](https://github.com/arcstep/langchain_zhipuai/blob/main/notes/knowledge_app.ipynb)\n- [textlong+\u667a\u8c31](https://github.com/arcstep/textlong/blob/main/notes/00%20howto/06%20%E6%99%BA%E8%B0%B1.ipynb)\n\n---\n\n**\u5b98\u65b9\u63a5\u53e3\u6307\u5357** \u667a\u8c31[\u5f00\u653e\u5e73\u53f0](https://open.bigmodel.cn/dev/api)\n\n## \u7b80\u5355\u7684\u4f8b\u5b50\n\n```python\nfrom langchain_zhipu import ChatZhipuAI\nllm = ChatZhipuAI()\n\n# invoke\nllm.invoke(\"hi\")\n\n# stream\nfor s in llm.stream(\"hi\"):\n  print(s)\n\n# astream\nasync for s in llm.astream(\"hi\"):\n  print(s)\n```\n\n## retrieval \u5de5\u5177\n\n```python\nfrom langchain_zhipu import convert_to_retrieval_tool\nllm.bind(tools=[convert_to_retrieval_tool(knowledge_id=\"1772979648448397312\")]).invoke(\"\u4f60\u77e5\u9053\u9a6c\u51ac\u6885\u4f4f\u54ea\u91cc\u5417\uff1f\")\n```\n\n## web_search \u5de5\u5177\n\n```python\nfrom langchain_zhipu import convert_to_web_search_tool\nllm.bind(tools=[convert_to_web_search_tool(search_query=\"\u5468\u661f\u9a70\u7535\u5f71\")]).invoke(\"\u54ea\u90e8\u7535\u5f71\u597d\u770b\uff1f\")\n```\n\n## function \u5de5\u5177\n\n```python\nfrom langchain_core.utils.function_calling import convert_to_openai_tool\nfrom langchain.tools import tool\n\n@tool\ndef search(query: str) -> str:\n    \"\"\"\u67e5\u8be2 langchan \u8d44\u6599; args: query \u7c7b\u578b\u4e3a\u5b57\u7b26\u4e32\uff0c\u63cf\u8ff0\u7528\u6237\u7684\u95ee\u9898.\"\"\"\n    return \"langchain_chinese \u662f\u4e00\u4e2a\u4e3a\u4e2d\u56fd\u5927\u6a21\u578b\u4f18\u5316\u7684langchain\u6a21\u5757\"\n\nllm.bind(tools=[convert_to_openai_tool(search)]).invoke(\"langchain_chinese\u662f\u5565\uff1f\u8bf7\u67e5\u8be2\u672c\u5730\u8d44\u6599\u56de\u7b54\u3002\")\n```\n\n## \u4f7f\u7528 glm-4v\n\n```python\nfrom langchain_zhipu import ChatZhipuAI\nfrom langchain_core.prompts import ChatPromptTemplate\n\nllm4v = ChatZhipuAI(model=\"glm-4v\")\n\nprompt = ChatPromptTemplate.from_messages([\n    (\"human\", [\n          {\n            \"type\": \"text\",\n            \"text\": \"\u56fe\u91cc\u6709\u4ec0\u4e48\"\n          },\n          {\n            \"type\": \"image_url\",\n            \"image_url\": {\n                \"url\" : \"https://img1.baidu.com/it/u=1369931113,3388870256&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1703696400&t=f3028c7a1dca43a080aeb8239f09cc2f\"\n            }\n          }\n        ]),\n])\n\n(prompt|llm4v).invoke({})\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u5c06\u667a\u8c31AI\u96c6\u6210\u5230LangChain",
    "version": "4.1.8",
    "project_urls": {
        "Homepage": "https://github.com/arcstep/langchain_zhipuai",
        "Repository": "https://github.com/arcstep/langchain_zhipuai.git"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "82ef088fb4967c8a09506072d3cfd3ee1c56b8c01ec21c65f4c3454040488057",
                "md5": "36c12470785d6502fc471a31c08669e7",
                "sha256": "c1e7aa7d17ad9eb9e21c110998c2b02f57d5d0dfed452ee4501e4dec9e20197a"
            },
            "downloads": -1,
            "filename": "langchain_zhipu-4.1.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "36c12470785d6502fc471a31c08669e7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 18938,
            "upload_time": "2024-07-16T05:54:46",
            "upload_time_iso_8601": "2024-07-16T05:54:46.595273Z",
            "url": "https://files.pythonhosted.org/packages/82/ef/088fb4967c8a09506072d3cfd3ee1c56b8c01ec21c65f4c3454040488057/langchain_zhipu-4.1.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b3f2e27b1e7d675ec34461cea2c2309ea52c1122eafc921c0da8742fd6beaab",
                "md5": "d4d6bb493804688f4b4b481026ab2fcd",
                "sha256": "78bc18cb049a7ec27505a76015e4e7a59abf06c0a3e98a1863802dccfb890cd7"
            },
            "downloads": -1,
            "filename": "langchain_zhipu-4.1.8.tar.gz",
            "has_sig": false,
            "md5_digest": "d4d6bb493804688f4b4b481026ab2fcd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 16164,
            "upload_time": "2024-07-16T05:54:48",
            "upload_time_iso_8601": "2024-07-16T05:54:48.461639Z",
            "url": "https://files.pythonhosted.org/packages/9b/3f/2e27b1e7d675ec34461cea2c2309ea52c1122eafc921c0da8742fd6beaab/langchain_zhipu-4.1.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-16 05:54:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "arcstep",
    "github_project": "langchain_zhipuai",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "langchain_zhipu"
}
        
Elapsed time: 1.29232s