大模型开发框架LangChain GO

LangchainGo 是 LangChain 的 Go 编程语言移植版本。

LangChain 是一个用于开发基于语言模型的应用程序框架。我们相信,最强大且差异化的应用不仅会通过 API 调用语言模型,还将具备以下特性:

  • 数据感知:将语言模型与其他数据源连接。

  • 智能代理:允许语言模型与其环境交互。
    LangChain 框架正是基于上述原则设计。


快速入门

注意:本文档适用于 LangChainGo。如需 Python 版本的文档,请访问此处。

请参考以下指南,快速上手使用 LangChain 创建语言模型应用:

  • 快速入门(使用 Ollama)

  • 快速入门(使用 OpenAI)


核心组件

LangChain 提供了多个核心模块的支持。每个模块均附有示例,帮助您快速入门并理解相关概念。
这些模块按复杂度递增顺序排列如下:

  1. 模型(Models)

    • 集成多种大语言模型(LLMs)、聊天模型和嵌入模型。

  2. 提示(Prompts)

    • 包含提示模板(Prompt Templates)及提示相关功能(如输出解析器 Output Parsers 和示例选择器 Example Selectors)。

  3. 索引(Indexes)(即将支持)

    • 提供与外部数据源交互的接口。

  4. 链(Chains)(即将支持)

    • 将多个组件组合为端到端工作流。

  5. 代理(Agents)(即将支持)

    • 实现基于语言模型的自主决策能力。


API 参考

您可在此查看 LangChain 所有模块的 API 参考文档,以及所有导出类和函数的完整说明:
LangChainGo API 文档


其他资源

以下资源可能对您的应用开发有所帮助:

  • LangChainHub:共享和探索提示模板(Prompts)、链(Chains)和代理(Agents)的社区平台。
    访问 LangChainHub →

  • Discord 社区:加入我们的 Discord 讨论 LangChain 相关话题!
    加入 Discord →

  • 生产环境支持:若需将 LangChain 应用部署至生产环境,我们可提供更全面的技术支持。请填写此表单,我们将为您创建专属的 Slack 支持频道。

通过 LangChainGo 和 Ollama 运行你的第一个程序

Ollama 提供了跨所有计算机平台进行本地大语言模型(LLM)推理的最简单方法。


前置条件

  1. Ollama:下载并安装 Ollama。

  2. Go:下载并安装 Go 编程语言。


操作步骤

  1. 初始化 Ollama
    在终端中执行以下命令(首次运行需下载模型,耗时较长):

$ ollama run llama2
  1. 运行示例程序
    在终端中输入以下命令:

    go run github.com/tmc/langchaingo/examples/ollama-completion-example@main

    你将看到类似以下输出(答案可能因模型版本不同略有差异):

The first human to set foot on the moon was Neil Armstrong, an American astronaut, who stepped onto the lunar surface during the Apollo 11 mission on July 20, 1969.

恭喜! 你已成功通过本地推理构建并运行了第一个基于开源大语言模型的程序。


完整代码(来自 ollama-completion-example

package mainimport ("context""fmt""log""github.com/tmc/langchaingo/llms""github.com/tmc/langchaingo/llms/ollama"
)func main() {// 初始化 Ollama 模型(使用 llama2)llm, err := ollama.New(ollama.WithModel("llama2"))if err != nil {log.Fatal(err)}ctx := context.Background()// 调用模型生成回答completion, err := llm.Call(ctx, "Human: Who was the first man to walk on the moon?\nAssistant:",llms.WithTemperature(0.8),         // 设置生成随机性(0-1)llms.WithStreamingFunc(func(ctx context.Context, chunk []byte) error {fmt.Print(string(chunk))       // 实时流式输出生成内容return nil}),)if err != nil {log.Fatal(err)}_ = completion // 忽略未使用的变量警告
}

Copy关键功能说明

  • ollama.New():初始化本地 Ollama 服务连接的 LLM 实例。

  • llm.Call():向模型发送提示(Prompt),支持流式输出(WithStreamingFunc)。

  • WithTemperature:控制生成结果的随机性(值越高,输出越多样)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41251.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作流引擎Flowable介绍及SpringBoot整合使用实例

Flowable简介 Flowable 是一个轻量级的业务流程管理(BPM)和工作流引擎,基于 Activiti 项目发展而来,专注于提供高性能、可扩展的工作流解决方案。它主要用于企业级应用中的流程自动化、任务管理和审批流等场景。 Flowable 的核心…

Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)

一、 高斯滤波 边缘检测本身属于锐化操作,对噪点比较敏感,所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后,其实把它们连起来边缘检测就算完了…

用Deepseek写扫雷uniapp小游戏

扫雷作为Windows系统自带的经典小游戏,承载了许多人的童年回忆。本文将详细介绍如何使用Uniapp框架从零开始实现一个完整的扫雷游戏,包含核心算法、交互设计和状态管理。无论你是Uniapp初学者还是有一定经验的开发者,都能从本文中获得启发。 …

JS数组方法

数组方法 一、数组 JavaScript 数组的大小是可调整的,并且可以包含不同 数据类型。(当不需要这些特性时,请使用 类型数组。) 注:JavaScript 类型数组是类似数组的对象,它提供了一种在内存缓冲区中读取和写…

string 的接口

我们继续来讲解一些常用的string接口。 一.at接口 我们来看一个越界的问题。 我们运行之后发现这是一个断言错误,直接就终止我们的程序了,不能作为异常被捕捉到,但是我们如果不想让程序直接崩溃该怎么办呢? 此时我们就要用到at关键…

2000-2019年各省地方财政行政事业性收费收入数据

2000-2019年各省地方财政行政事业性收费收入数据 1、时间:2000-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政行政事业性收费收入 4、范围:31省 5、指标说明:地方财政行政事业…

Pytorch学习笔记(九)Learning PyTorch - Deep Learning with PyTorch: A 60 Minute Blitz

这篇博客瞄准的是 pytorch 官方教程中 Learning PyTorch 章节的 Deep Learning with PyTorch: A 60 Minute Blitz 部分, 官网链接:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 完整网盘链接: https://pan.baidu.com/s/1L9…

Elasticsearch 的搜索功能

Elasticsearch 的搜索功能 建议阅读顺序: Elasticsearch 入门Elasticsearch 搜索(本文) 1. 介绍 使用 Elasticsearch 最终目的是为了实现搜索功能,现在先将文档添加到索引中,接下来完成搜索的方法。 查询的分类&…

比特币等虚拟货币实时价格使用说明,数字货币价格获取,k线获取,实时价格获取

数据截图 k线数据 websocket 实时价格数据 根据这些数据可以做出自己的产品 获取时间段内的k线数据 在开始之前,你需要知道的知识: 币种缩写英文名币种IDBTCBitcoinbitcoinETHEthereumethereumEOSEOSeosUSDTTethertetherLTCLitecoinlitecoinUSDDol…

初阶7 vector

本章重点 vector的介绍vector的使用vector的模拟实现 1.vector的介绍 vector就类似数据结构中的顺序表 vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。 意味着可以采用下标对vector的元素 进行访问,和数…

解码未来:DeepSeek开源FlashMLA,推理加速核心技术,引领AI变革

前言: DeepSeek 兑现了自己的诺言,开源了一款用于 Hopper GPU 的高效型 MLA 解码核:FlashMLA。 项目地址:https://github.com/deepseek-ai/FlashMLA 1:FlashMLA 是什么呀? MLA是DeepSeek大模型的重要技术创新点&…

scss预处理器对比css的优点以及基本的使用

本文主要在vue中演示&#xff0c;scss的基本使用。安装命令 npm install sass sass-loader --save-dev 变量 SCSS 支持变量&#xff0c;可将常用的值&#xff08;如颜色、字体大小、间距等&#xff09;定义为变量&#xff0c;方便重复使用和统一修改。 <template><…

GPU架构与通信互联技术介绍

文章目录 GPU架构介绍SM 和 Warp Scheduler GPU通信互联技术介绍1、GPUDirectGPUDirect Shared AccessGPUDirect P2PGPUDirect for VideoGPUDirect for RDMARDMAGPUDirect RDMA GPUDirect Storage 2、NVLink & NVSwitchNVLinkNVSwitch 3、应用场景总结 GPU架构介绍 SM 和 …

强化学习与神经网络结合(以 DQN 展开)

目录 基于 PyTorch 实现简单 DQN double DQN dueling DQN Noisy DQN&#xff1a;通过噪声层实现探索&#xff0c;替代 ε- 贪心策略 Rainbow_DQN如何计算连续型的Actions 强化学习中&#xff0c;智能体&#xff08;Agent&#xff09;通过与环境交互学习最优策略。当状态空间或动…

day 16

创建链接文件 软链接&#xff1a;又叫符号链接&#xff0c;类似win的快捷方式&#xff0c;是一种用来建立文件的特殊文件&#xff0c;这个文件里的数据都是建立链接的文件&#xff0c;但是它和建立链接的文件不是一个东西&#xff0c;如果建立链接的文件移动或删除&#xff0c…

fork系统调用

基本概念&#xff1a; 在操作系统里&#xff0c;进程是正在运行的程序的实例。fork() 函数的作用是复制当前进程&#xff0c;生成一个新的进程&#xff0c;这个新进程被称作子进程&#xff0c;而原本的进程则是父进程。这两个进程&#xff08;父进程和子进程&#xff09;会从 …

【leetcode刷题记录】(java)数组 链表 哈希表

文章目录 四、题目之&#xff1a;代码随想录(1) 代码随想录&#xff1a;数组[704. 二分查找](https://leetcode.cn/problems/binary-search/)[27. 移除元素](https://leetcode.cn/problems/remove-element/)暴力解:双指针&#xff1a; [977. 有序数组的平方](https://leetcode.…

在线运行vscode

安装 https://github.com/coder/code-server?utm_sourcesyndication&pubDate20250317 运行前预览脚本 curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run运行脚本 curl -fsSL https://code-server.dev/install.sh | sh其他 可以通过后台服务运行&am…

【Tauri2】002——Cargo.toml和入口文件

目录 前言 正文 toml文件的基础 注释——# Comment 键值对——Key/Value 表——[table] 内联表——Inline Table 数组——Array package和crate Cargo.toml文件 Cargo.toml——dependencies Cargo.toml——lib crate-type main.rs 前言 【Tauri2】001——安装及…

Netty源码—7.ByteBuf原理三

大纲 9.Netty的内存规格 10.缓存数据结构 11.命中缓存的分配流程 12.Netty里有关内存分配的重要概念 13.Page级别的内存分配 14.SubPage级别的内存分配 15.ByteBuf的回收 9.Netty的内存规格 (1)4种内存规格 (2)内存申请单位 (1)4种内存规格 一.tiny&#xff1a;表示从…