Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: langchain-ai/langchainjs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0bc81301ba6e41a3fd8bbc2ce770634be1d2bafe
Choose a base ref
...
head repository: langchain-ai/langchainjs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 535c9d58ce18790fe158d2f8be3ab91222a7649e
Choose a head ref
  • 15 commits
  • 43 files changed
  • 3 contributors

Commits on Jan 25, 2025

  1. release(core): 0.3.36 (#7595)

    jacoblee93 authored Jan 25, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    0eae6d9 View commit details
  2. fix(openai): Revert Azure default withStructuredOutput changes (#7596)

    jacoblee93 authored Jan 25, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    0ecaad1 View commit details
  3. release(openai): 0.4.1 (#7597)

    jacoblee93 authored Jan 25, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    67ca4f9 View commit details
  4. feat(openai): Refactor to allow easier subclassing (#7598)

    jacoblee93 authored Jan 25, 2025
    Copy the full SHA
    cb335ba View commit details
  5. release(openai): 0.4.2 (#7599)

    jacoblee93 authored Jan 25, 2025
    Copy the full SHA
    fcdf4bc View commit details

Commits on Jan 28, 2025

  1. feat(deepseek): Adds Deepseek integration (#7604)

    jacoblee93 authored Jan 28, 2025
    Copy the full SHA
    b648814 View commit details
  2. release(deepseek): 0.0.1 (#7608)

    jacoblee93 authored Jan 28, 2025
    Copy the full SHA
    f926ede View commit details
  3. feat: update Novita AI doc (#7602)

    jasonhp authored Jan 28, 2025
    Copy the full SHA
    74f89e6 View commit details
  4. feat(langchain): Add DeepSeek to initChatModel (#7609)

    jacoblee93 authored Jan 28, 2025
    Copy the full SHA
    184b34b View commit details
  5. Release 0.3.14 (#7611)

    jacoblee93 authored Jan 28, 2025
    Copy the full SHA
    bdab4a3 View commit details
  6. fix: Add test for pdf uploads anthropic (#7613)

    bracesproul authored Jan 28, 2025
    Copy the full SHA
    29486ed View commit details
  7. feat: Update google genai to support file uploads (#7612)

    bracesproul authored Jan 28, 2025
    Copy the full SHA
    8cf9f45 View commit details
  8. chore(google-genai): Drop .only in test (#7614)

    bracesproul authored Jan 28, 2025
    Copy the full SHA
    f0feee4 View commit details
  9. release(google-genai): 0.1.7 (#7615)

    bracesproul authored Jan 28, 2025
    Copy the full SHA
    c1cda51 View commit details

Commits on Jan 29, 2025

  1. fix(core): Fix stream events bug when errors are thrown too quickly d…

    …uring iteration (#7617)
    jacoblee93 authored Jan 29, 2025
    Copy the full SHA
    535c9d5 View commit details
Showing with 1,981 additions and 162 deletions.
  1. +312 βˆ’0 docs/core_docs/docs/integrations/chat/deepseek.ipynb
  2. +5 βˆ’5 docs/core_docs/docs/integrations/chat/novita.ipynb
  3. +1 βˆ’1 docs/core_docs/docs/integrations/chat/xai.ipynb
  4. +1 βˆ’0 examples/package.json
  5. +1 βˆ’1 langchain-core/package.json
  6. +31 βˆ’1 langchain-core/src/runnables/base.ts
  7. +20 βˆ’0 langchain-core/src/runnables/tests/runnable_stream_events_v2.test.ts
  8. +6 βˆ’1 langchain/package.json
  9. +11 βˆ’0 langchain/src/chat_models/tests/universal.int.test.ts
  10. +7 βˆ’0 langchain/src/chat_models/universal.ts
  11. +34 βˆ’0 libs/langchain-anthropic/src/tests/chat_models.int.test.ts
  12. +1 βˆ’0 libs/langchain-deepseek/.env.example
  13. +74 βˆ’0 libs/langchain-deepseek/.eslintrc.cjs
  14. +7 βˆ’0 libs/langchain-deepseek/.gitignore
  15. +19 βˆ’0 libs/langchain-deepseek/.prettierrc
  16. +10 βˆ’0 libs/langchain-deepseek/.release-it.json
  17. +21 βˆ’0 libs/langchain-deepseek/LICENSE
  18. +80 βˆ’0 libs/langchain-deepseek/README.md
  19. +21 βˆ’0 libs/langchain-deepseek/jest.config.cjs
  20. +12 βˆ’0 libs/langchain-deepseek/jest.env.cjs
  21. +22 βˆ’0 libs/langchain-deepseek/langchain.config.js
  22. +89 βˆ’0 libs/langchain-deepseek/package.json
  23. +9 βˆ’0 libs/langchain-deepseek/scripts/jest-setup-after-env.js
  24. +534 βˆ’0 libs/langchain-deepseek/src/chat_models.ts
  25. +1 βˆ’0 libs/langchain-deepseek/src/index.ts
  26. +16 βˆ’0 libs/langchain-deepseek/src/tests/chat_models.int.test.ts
  27. +126 βˆ’0 libs/langchain-deepseek/src/tests/chat_models.standard.int.test.ts
  28. +39 βˆ’0 libs/langchain-deepseek/src/tests/chat_models.standard.test.ts
  29. +8 βˆ’0 libs/langchain-deepseek/tsconfig.cjs.json
  30. +23 βˆ’0 libs/langchain-deepseek/tsconfig.json
  31. +11 βˆ’0 libs/langchain-deepseek/turbo.json
  32. +1 βˆ’1 libs/langchain-google-genai/package.json
  33. +41 βˆ’0 libs/langchain-google-genai/src/chat_models.ts
  34. +30 βˆ’0 libs/langchain-google-genai/src/tests/chat_models.int.test.ts
  35. +13 βˆ’0 libs/langchain-google-genai/src/utils/common.ts
  36. +1 βˆ’1 libs/langchain-groq/src/chat_models.ts
  37. +1 βˆ’1 libs/langchain-openai/package.json
  38. +68 βˆ’1 libs/langchain-openai/src/azure/chat_models.ts
  39. +157 βˆ’145 libs/langchain-openai/src/chat_models.ts
  40. +15 βˆ’0 libs/langchain-openai/src/tests/azure/chat_models.int.test.ts
  41. +58 βˆ’0 libs/langchain-openai/src/tests/chat_models.int.test.ts
  42. +2 βˆ’2 libs/langchain-xai/src/chat_models.ts
  43. +42 βˆ’2 yarn.lock
312 changes: 312 additions & 0 deletions docs/core_docs/docs/integrations/chat/deepseek.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,312 @@
{
"cells": [
{
"cell_type": "raw",
"id": "afaf8039",
"metadata": {
"vscode": {
"languageId": "raw"
}
},
"source": [
"---\n",
"sidebar_label: DeepSeek\n",
"---"
]
},
{
"cell_type": "markdown",
"id": "e49f1e0d",
"metadata": {},
"source": [
"# ChatDeepSeek\n",
"\n",
"This will help you getting started with DeepSeek [chat models](/docs/concepts/#chat-models). For detailed documentation of all `ChatDeepSeek` features and configurations head to the [API reference](https://api.js.langchain.com/classes/_langchain_deepseek.ChatDeepSeek.html).\n",
"\n",
"## Overview\n",
"### Integration details\n",
"\n",
"| Class | Package | Local | Serializable | [PY support](https://python.langchain.com/docs/integrations/chat/deepseek) | Package downloads | Package latest |\n",
"| :--- | :--- | :---: | :---: | :---: | :---: | :---: |\n",
"| [`ChatDeepSeek`](https://api.js.langchain.com/classes/_langchain_deepseek.ChatDeepSeek.html) | [`@langchain/deepseek`](https://npmjs.com/@langchain/deepseek) | ❌ (see [Ollama](/docs/integrations/chat/ollama)) | beta | βœ… | ![NPM - Downloads](https://img.shields.io/npm/dm/@langchain/deepseek?style=flat-square&label=%20&) | ![NPM - Version](https://img.shields.io/npm/v/@langchain/deepseek?style=flat-square&label=%20&) |\n",
"\n",
"### Model features\n",
"\n",
"See the links in the table headers below for guides on how to use specific features.\n",
"\n",
"| [Tool calling](/docs/how_to/tool_calling) | [Structured output](/docs/how_to/structured_output/) | JSON mode | [Image input](/docs/how_to/multimodal_inputs/) | Audio input | Video input | [Token-level streaming](/docs/how_to/chat_streaming/) | [Token usage](/docs/how_to/chat_token_usage_tracking/) | [Logprobs](/docs/how_to/logprobs/) |\n",
"| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n",
"| βœ… | βœ… | βœ… | ❌ | ❌ | ❌ | βœ… | βœ… | βœ… | \n",
"\n",
"Note that as of 1/27/25, tool calling and structured output are not currently supported for `deepseek-reasoner`.\n",
"\n",
"## Setup\n",
"\n",
"To access DeepSeek models you'll need to create a DeepSeek account, get an API key, and install the `@langchain/deepseek` integration package.\n",
"\n",
"You can also access the DeepSeek API through providers like [Together AI](/docs/integrations/chat/togetherai) or [Ollama](/docs/integrations/chat/ollama).\n",
"\n",
"### Credentials\n",
"\n",
"Head to https://deepseek.com/ to sign up to DeepSeek and generate an API key. Once you've done this set the `DEEPSEEK_API_KEY` environment variable:\n",
"\n",
"```bash\n",
"export DEEPSEEK_API_KEY=\"your-api-key\"\n",
"```\n",
"\n",
"If you want to get automated tracing of your model calls you can also set your [LangSmith](https://docs.smith.langchain.com/) API key by uncommenting below:\n",
"\n",
"```bash\n",
"# export LANGSMITH_TRACING=\"true\"\n",
"# export LANGSMITH_API_KEY=\"your-api-key\"\n",
"```\n",
"\n",
"### Installation\n",
"\n",
"The LangChain ChatDeepSeek integration lives in the `@langchain/deepseek` package:\n",
"\n",
"```{=mdx}\n",
"import IntegrationInstallTooltip from \"@mdx_components/integration_install_tooltip.mdx\";\n",
"import Npm2Yarn from \"@theme/Npm2Yarn\";\n",
"\n",
"<IntegrationInstallTooltip></IntegrationInstallTooltip>\n",
"\n",
"<Npm2Yarn>\n",
" @langchain/deepseek @langchain/core\n",
"</Npm2Yarn>\n",
"\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "a38cde65-254d-4219-a441-068766c0d4b5",
"metadata": {},
"source": [
"## Instantiation\n",
"\n",
"Now we can instantiate our model object and generate chat completions:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "cb09c344-1836-4e0c-acf8-11d13ac1dbae",
"metadata": {},
"outputs": [],
"source": [
"import { ChatDeepSeek } from \"@langchain/deepseek\";\n",
"\n",
"const llm = new ChatDeepSeek({\n",
" model: \"deepseek-reasoner\",\n",
" temperature: 0,\n",
" // other params...\n",
"})"
]
},
{
"cell_type": "markdown",
"id": "2b4f3e15",
"metadata": {},
"source": [
"<!-- ## Invocation -->"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "62e0dbc3",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AIMessage {\n",
" \"id\": \"e2874482-68a7-4552-8154-b6a245bab429\",\n",
" \"content\": \"J'adore la programmation.\",\n",
" \"additional_kwargs\": {,\n",
" \"reasoning_content\": \"...\",\n",
" },\n",
" \"response_metadata\": {\n",
" \"tokenUsage\": {\n",
" \"promptTokens\": 23,\n",
" \"completionTokens\": 7,\n",
" \"totalTokens\": 30\n",
" },\n",
" \"finish_reason\": \"stop\",\n",
" \"model_name\": \"deepseek-reasoner\",\n",
" \"usage\": {\n",
" \"prompt_tokens\": 23,\n",
" \"completion_tokens\": 7,\n",
" \"total_tokens\": 30,\n",
" \"prompt_tokens_details\": {\n",
" \"cached_tokens\": 0\n",
" },\n",
" \"prompt_cache_hit_tokens\": 0,\n",
" \"prompt_cache_miss_tokens\": 23\n",
" },\n",
" \"system_fingerprint\": \"fp_3a5770e1b4\"\n",
" },\n",
" \"tool_calls\": [],\n",
" \"invalid_tool_calls\": [],\n",
" \"usage_metadata\": {\n",
" \"output_tokens\": 7,\n",
" \"input_tokens\": 23,\n",
" \"total_tokens\": 30,\n",
" \"input_token_details\": {\n",
" \"cache_read\": 0\n",
" },\n",
" \"output_token_details\": {}\n",
" }\n",
"}\n"
]
}
],
"source": [
"const aiMsg = await llm.invoke([\n",
" [\n",
" \"system\",\n",
" \"You are a helpful assistant that translates English to French. Translate the user sentence.\",\n",
" ],\n",
" [\"human\", \"I love programming.\"],\n",
"])\n",
"aiMsg"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d86145b3-bfef-46e8-b227-4dda5c9c2705",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"J'adore la programmation.\n"
]
}
],
"source": [
"console.log(aiMsg.content)"
]
},
{
"cell_type": "markdown",
"id": "18e2bfc0-7e78-4528-a73f-499ac150dca8",
"metadata": {},
"source": [
"## Chaining\n",
"\n",
"We can [chain](/docs/how_to/sequence/) our model with a prompt template like so:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e197d1d7-a070-4c96-9f8a-a0e86d046e0b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AIMessage {\n",
" \"id\": \"6e7f6f8c-8d7a-4dad-be07-425384038fd4\",\n",
" \"content\": \"Ich liebe es zu programmieren.\",\n",
" \"additional_kwargs\": {,\n",
" \"reasoning_content\": \"...\",\n",
" },\n",
" \"response_metadata\": {\n",
" \"tokenUsage\": {\n",
" \"promptTokens\": 18,\n",
" \"completionTokens\": 9,\n",
" \"totalTokens\": 27\n",
" },\n",
" \"finish_reason\": \"stop\",\n",
" \"model_name\": \"deepseek-reasoner\",\n",
" \"usage\": {\n",
" \"prompt_tokens\": 18,\n",
" \"completion_tokens\": 9,\n",
" \"total_tokens\": 27,\n",
" \"prompt_tokens_details\": {\n",
" \"cached_tokens\": 0\n",
" },\n",
" \"prompt_cache_hit_tokens\": 0,\n",
" \"prompt_cache_miss_tokens\": 18\n",
" },\n",
" \"system_fingerprint\": \"fp_3a5770e1b4\"\n",
" },\n",
" \"tool_calls\": [],\n",
" \"invalid_tool_calls\": [],\n",
" \"usage_metadata\": {\n",
" \"output_tokens\": 9,\n",
" \"input_tokens\": 18,\n",
" \"total_tokens\": 27,\n",
" \"input_token_details\": {\n",
" \"cache_read\": 0\n",
" },\n",
" \"output_token_details\": {}\n",
" }\n",
"}\n"
]
}
],
"source": [
"import { ChatPromptTemplate } from \"@langchain/core/prompts\"\n",
"\n",
"const prompt = ChatPromptTemplate.fromMessages(\n",
" [\n",
" [\n",
" \"system\",\n",
" \"You are a helpful assistant that translates {input_language} to {output_language}.\",\n",
" ],\n",
" [\"human\", \"{input}\"],\n",
" ]\n",
")\n",
"\n",
"const chain = prompt.pipe(llm);\n",
"await chain.invoke(\n",
" {\n",
" input_language: \"English\",\n",
" output_language: \"German\",\n",
" input: \"I love programming.\",\n",
" }\n",
")"
]
},
{
"cell_type": "markdown",
"id": "3a5bb5ca-c3ae-4a58-be67-2cd18574b9a3",
"metadata": {},
"source": [
"## API reference\n",
"\n",
"For detailed documentation of all ChatDeepSeek features and configurations head to the API reference: https://api.js.langchain.com/classes/_langchain_deepseek.ChatDeepSeek.html"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "TypeScript",
"language": "typescript",
"name": "tslab"
},
"language_info": {
"codemirror_mode": {
"mode": "typescript",
"name": "javascript",
"typescript": true
},
"file_extension": ".ts",
"mimetype": "text/typescript",
"name": "typescript",
"version": "3.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
10 changes: 5 additions & 5 deletions docs/core_docs/docs/integrations/chat/novita.ipynb
Original file line number Diff line number Diff line change
@@ -21,9 +21,9 @@
"\n",
"Delivers an affordable, reliable, and simple inference platform for running top LLM models.\n",
"\n",
"You can find all the models we support here: [Novita AI Featured Models](https://novita.ai/model-api/product/llm-api?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link) or request the [Models API](https://novita.ai/docs/model-api/reference/llm/models.html?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link) to get all available models.\n",
"You can find all the models we support here: [Novita AI Featured Models](https://novita.ai/models/llm?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link) or request the [Models API](https://novita.ai/docs/guides/llm-models?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link) to get all available models.\n",
"\n",
"Try the [Novita AI Llama 3 API Demo](https://novita.ai/model-api/product/llm-api/playground#meta-llama-llama-3.1-8b-instruct?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link) today!"
"Try the [Novita AI DeepSeek R1 API Demo](https://novita.ai/models/llm/deepseek-deepseek-r1?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link) today!"
]
},
{
@@ -81,7 +81,7 @@
"source": [
"## Instantiation\n",
"\n",
"Now we can instantiate our model object and generate chat completions. Try the [Novita AI Llama 3 API Demo](https://novita.ai/model-api/product/llm-api/playground#meta-llama-llama-3.1-8b-instruct?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link) today!"
"Now we can instantiate our model object and generate chat completions. Try the [Novita AI DeepSeek R1 API Demo](https://novita.ai/models/llm/deepseek-deepseek-r1?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link) today!"
]
},
{
@@ -97,7 +97,7 @@
"import { ChatNovitaAI } from \"@langchain/community/chat_models/novita\";\n",
"\n",
"const llm = new ChatNovitaAI({\n",
" model: \"meta-llama/llama-3.1-8b-instruct\",\n",
" model: \"deepseek/deepseek-r1\",\n",
" temperature: 0,\n",
" // other params...\n",
"})"
@@ -192,7 +192,7 @@
"source": [
"## API reference\n",
"\n",
"For detailed documentation of Novita AI LLM APIs, head to [Novita AI LLM API reference](https://novita.ai/docs/model-api/reference/llm/llm.html?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link)\n"
"For detailed documentation of Novita AI LLM APIs, head to [Novita AI LLM API reference](https://novita.ai/docs/guides/llm-api?utm_source=github_langchain&utm_medium=github_readme&utm_campaign=link)\n"
]
}
],
2 changes: 1 addition & 1 deletion docs/core_docs/docs/integrations/chat/xai.ipynb
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@
"\n",
"[xAI](https://x.ai/) is an artificial intelligence company that develops large language models (LLMs). Their flagship model, Grok, is trained on real-time X (formerly Twitter) data and aims to provide witty, personality-rich responses while maintaining high capability on technical tasks.\n",
"\n",
"This guide will help you getting started with `ChatXAI` [chat models](/docs/concepts/chat_models). For detailed documentation of all `ChatXAI` features and configurations head to the [API reference](https://api.js.langchain.com/classes/langchain_community_chat_models_fireworks.ChatXAI.html).\n",
"This guide will help you getting started with `ChatXAI` [chat models](/docs/concepts/chat_models). For detailed documentation of all `ChatXAI` features and configurations head to the [API reference](https://api.js.langchain.com/classes/_langchain_xai.ChatXAI.html).\n",
"\n",
"## Overview\n",
"### Integration details\n",
1 change: 1 addition & 0 deletions examples/package.json
Original file line number Diff line number Diff line change
@@ -45,6 +45,7 @@
"@langchain/cohere": "workspace:*",
"@langchain/community": "workspace:*",
"@langchain/core": "workspace:*",
"@langchain/deepseek": "workspace:*",
"@langchain/exa": "workspace:*",
"@langchain/google-common": "workspace:*",
"@langchain/google-genai": "workspace:*",
2 changes: 1 addition & 1 deletion langchain-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@langchain/core",
"version": "0.3.35",
"version": "0.3.36",
"description": "Core LangChain.js abstractions and schemas",
"type": "module",
"engines": {
Loading