使用LANGCHAIN和GEMINI构建AI应用程序

news2024/11/15 17:30:01

借助这些先进技术,您可以生成文本、分析图像并实现多模态 AI 交互。

LangChain 和 Google 的 Gemini API 是什么?

LangChain:构建 AI 应用程序的弹性框架

LangChain 是一个强大且灵活的框架,可以简化 AI 应用程序的开发。它提供了一种模块化且可组合的方法,允许技术人员组合各种工具(例如语言模型、知识库和数据源)来创建复杂的 AI 系统。借助 LangChain,开发人员可以利用最先进的自然语言处理 (NLP) 模型,集成外部数据源,并构建针对特定用例量身定制的自定义代理。

Google 的 Gemini API:释放多模态 AI 的潜力

Google 的 Gemini API 是一个尖端的 AI 多模态平台,使开发人员能够构建可以同时理解和处理多种方式的应用程序。此 API 使用 Google 的高级机器学习模型和计算机视觉功能来分析和解释文本、图像、音频和视频数据。借助 Gemini,开发人员可以创建智能应用程序,以更类似于人类的方式感知和理解世界。

设置和安装

为了确保你的 Python 环境已准备好与 LangChain 和 Google 的 Gemini 协同工作,请使用 pip 安装必要的包:

pip install -q langchain-google-genai
pip install --upgrade -q langchain-google-genai
pip show langchain-google-genai
pip install -q google-generativeai


这些命令处理安装和升级专为 Google 的 Gemini 和 Gemini API 客户端库定制的 LangChain 包。

配置

要使用[Google 的 Gemini API],你需要一个 API 密钥。出于安全性和易于访问性的考虑,将此密钥存储在.env文件中:

from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv(), override=True)


如果 API 密钥未设置在你的环境变量中,以下脚本将提示你手动输入它:


import getpass
import os
if 'GOOGLE_API_KEY' not in os.environ:
    os.environ['GOOGLE_API_KEY'] = getpass.getpass('Provide your Google API Key: ')


探索可用模型

在深入了解具体功能之前,了解哪些模型可用很有用:

import google.generativeai as genai
for model in genai.list_models():
    print(model.name)


此代码段列出了可通过 Gemini API 访问的所有模型,允许你为你的任务选择合适的模型。

将 Gemini 与 LangChain 集成

基本设置

LangChain 简化了与 Gemini 模型的交互。以下是设置基本聊天界面的方法:

from langchain_google_genai import ChatGoogleGenerativeAI

# Create an instance of the LLM, using the 'gemini-pro' model with a specified creativity level
llm = ChatGoogleGenerativeAI(model='gemini-pro', temperature=0.9)

# Send a creative prompt to the LLM
response = llm.invoke('Write a paragraph about life on Mars in year 2100.')
print(response.content)


此代码使用 Gemini-pro 模型初始化 LangChain LLM 实例,并发送有关 2100 年火星生活的创意提示。

使用模板和链条的高级用法

LangChain 还支持更高级的模板和链式机制:

from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# Set up a prompt template
prompt = PromptTemplate.from_template('You are a content creator. Write me a tweet about {topic}')

# Create a chain that utilizes both the LLM and the prompt template
chain = LLMChain(llm=llm, prompt=prompt, verbose=True)
topic = 'Why will AI change the world'
response = chain.invoke(input=topic)
print(response)


此设置支持更结构化的交互,其中链条根据输入动态构建和发送提示。

系统提示和流式传输

系统提示

处理提示中的特定指令对于控制你的 AI 应用程序的行为至关重要:

from langchain_core.messages import HumanMessage, SystemMessage

# Setup with system message conversion
llm = ChatGoogleGenerativeAI(model='gemini-pro', convert_system_message_to_human=True)
output = llm.invoke([
    SystemMessage(content='Answer only YES or NO in French.'),
    HumanMessage(content='Is fish a mammal?')
])
print(output.content)


此方法对于创建结构化、受控的对话很有用,其中 AI 系统严格遵守给定的指令。

流式传输响应

对于较长的输出,流式传输至关重要:

# Send a prompt requiring detailed, continuous output
prompt = 'Write a scientific paper outlining the mathematical foundation of our universe.'
for chunk in llm.stream(prompt):
    print(chunk.content)
    print('-' * 100)


流式传输允许 API 更有效地处理较大的输出,将它们发送为可管理的块。

使用 Gemini Pro Vision 的多模态 AI

处理图像

Gemini Pro Vision 将功能扩展到图像分析:

from PIL import Image
img = Image.open('match.jpg') #change this with your image

# Setup for image analysis
from langchain_core.messages import HumanMessage
from langchain_google_genai import ChatGoogleGenerativeAI

llm = ChatGoogleGenerativeAI(model='gemini-pro-vision')
prompt = 'What is in this image?'
message = HumanMessage(
  content=[
    {'type': 'text', 'text': prompt},
    {'type': 'image_url', 'image_url': img}
  ]
)
response = llm.invoke([message])
print(response.content)


此示例演示如何提示 AI 系统询问有关图像的问题并描述其内容。

结论

使用 LangChain 和 Gemini 的功能,你可以生成文本、分析图像并实现多模态 AI 交互。

集成这些先进技术使开发人员能够开发更智能、响应性更高且能够轻松处理复杂任务的 AI 系统。

无论你的目标是增强用户交互、自动响应还是分析视觉内容,你都可以将这些强大的工具整合到你的项目中。

开始实验并探索LangChain和Google的Gemini的潜力,将您的应用程序转化为更强大、更有创造力的平台。

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

绝对新惊喜:4款王者级别的办公软件,免费又实用

工作里有那么多规矩,但效率绝对是重中之重,选对了好软件,工作就能更高效,下班也能更早回家。 要是你也想做个“时间管理小能手”,下面这4款超好用的办公软件,你可千万别错过! Gitmind 现在很…

奇绩创坛 2024 年春季创业营路演

奇绩创坛 2024 年春季创业营路演 奇绩创坛在北京中关村举办的 2024 年春季创业营路演 奇绩创坛在北京中关村举办的 2024 年春季创业营路演 RWKV 元始智能的COO罗璇在会议上详细分享了RWKV的创新模型架构、最新进展以及当前的研究方向。 目前,RWKV架构已经推出了最…

五、LVS原理

目录 5.1 LVS 相关原理 5.1.1 LVS集群的体系结构以及特点 5.1.1.1 LVS简介 5.1.1.2 LVS体系结构 5.1.1.3 LVS相关术语 5.1.1.4 LVS工作模式 5.1.1.5 LVS调度算法 5.1.2 LVS-DR集群介绍 5.1.2.1 LVS-DR模式工作原理 5.1.2.2 LVS-DR模式应用特点 5.1.2.3 LVS-DR模式ARP抑制 5.1…

使用Transformer进行抄袭检测

动机 在许多行业中,尤其是在学术界,抄袭是一个重大问题。随着互联网和开放信息的兴起,这种现象甚至变得更加严重,任何人都可以通过点击访问特定主题的任何信息。 基于这一观察,研究人员一直在尝试使用不同的文本分析…

生成高保真度3D数字人化身:打造你的专属虚拟形象

在数字化时代,我们的虚拟形象正变得越来越重要。现在,一项前沿技术正将这一领域推向新的高度——生成高保真度的3D数字人化身。这项技术不仅可以将你的形象以3D形式呈现,更能赋予它生命,让你的虚拟形象拥有丰富的表情和动作。 一、技术简介 这项技术就像是一个高级的3D照…

最简单的方法,连续打印多个空格

1、大家都知道,c语言中,我们打印语句时,如果使用\t来控制打印间隔,可能会出现排版错乱问题,所以一般都会使用空格来控制间隔,这样不管在哪个工具上面显示,打印的信息都不会错乱。 2、控制间隔的…

fdtd(时域有限差分)仿真

FDTD Solutions 是一款非常好用的微纳光学设计工具。该软件提供了丰富的设计功能,支持 CMOS 图像传感器,OLED 和液晶,表面计量,表面等离子体,石墨烯,太阳能电池,集成光子组件,超材 料…

Offline :Adversarially Trained Actor Critic for Offline Reinforcement Learning

ICML 2022 paper code 基于Stackelberg游戏博弈形式,对抗的学习actor与critic Intro Method 将离线RL的Stackelberg博弈表述为一个双层优化问题,学习者策略π∈Π为领导者,批评家f∈F为跟随者: π ^ ∗ ∈ argmax ⁡ π ∈ I I L μ ( π…

JVM如何确定方法调用

方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定调用哪一个方法,不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作,但Class文件的编译过程中不包含传统编译中的连接步骤,一…

破解动态网页:如何用JavaScript获取自动消失的联想词

前几天在做数据分析时,我尝试获取某网站上输入搜索词后的联想词,输入搜索词后会弹出一个显示联想词的框。有趣的是,当我尝试通过按F12定位这个弹框在HTML中的位置时,输入框失去焦点后,联想词弹框就自动消失了。我观察到…

UnityAPI学习之Animator的基本使用

动画与动画控制器 示例1: 创建Animator对动画控制器进行统一管理,在Gris中创建Animator组件,并对其中的Controller属性进行赋值 在进行动画创作前,需先将图片的Texture Type属性改为Sprite(2D and UI) 再将一系列图片拖入Gris物…

nss刷题(4)

1、[SWPUCTF 2021 新生赛]easyrce <?php error_reporting(0); highlight_file(__FILE__); if(isset($_GET[url])) { eval($_GET[url]); } ?> if(isset($_GET[url])) isset函数用来检测url变量是否存在&#xff1b;$_GET函数获取变量数据 eval($_GET[url]); eval函数用…

基于Java+Swing+mysql幼儿园信息管理系统V2

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

和鲸101领航北中医:助力健康医疗AI实验室建设,培养交叉数据人才

2024 年 3 月开学季&#xff0c;北京中医药大学&#xff08;简称“北中医”&#xff09;的健康医疗人工智能实验室迎来了正式投入使用后的第一堂课。除了配备全新的桌椅和尖端的硬件服务器外&#xff0c;实验室还引入了先进的人工智能实训平台&#xff0c;为大数据管理与应用专…

Linux1(介绍与基本命令)

目录 一、初始Linux 1. Linux的起源 2. Linux是什么&#xff1f; 3. Linux内核版本 4. Linux的应用 5. 终端 6. Shell 7. Linux目录结构 二、基本命令 1. 基本的命令格式 2. shutdown 关机命令 3. pwd 当前工作目录 4. ls 查看目录内容 5. cd 改变工作目录 …

【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版10(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言使用DoTween优化阳光生成和拾取效果拾取阳光优化生成阳光优化 场景加载进度条新增加载场景Loading&#xff0c;绘制开始界面绘制菜单界面滑动滚轮一直滚动 场景加载源码结束语 前言 本节主要实现使用DoTween优化阳光生成和拾取…

Linux运维实用小脚本,登录即自动显示系统信息

systeminfo.sh #!/bin/bash # systeminfo.sh # by 运维朱工 # site&#xff1a;bash.lutixia.cn ##################################### 获取IP地址和主机名 IP_ADDR$(hostname -I | cut -d -f1) HOSTNAME$(hostname)# CPU负载信息&#xff1a; cpu_load() {echo -e "\…

JAVA基础--MAVEN

MAVEN的认识 什么是MAVEN Maven是一个项目构建及管理工具&#xff0c;开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置&#xff0c; Maven 使用了一个标准的目录结构在不同开发工具中也能实现项目结构的统一。 统一项目结构 Maven提供了清理&#xff0c;编译&a…

【二进制部署k8s-1.29.4】十三、metrics-server的安装部署

文章目录 简介 一.metrics-server的安装 简介 本章节主要讲解metrics-server的安装&#xff0c;metrics-server主要是用于采集k8s中节点和pod的内存和cpu指标&#xff0c;在观察几点和pod的实时资源使用情况还是比较有用的&#xff0c;如果需要记录历史信息&#xff0c;建议采用…

Java到AI大模型,我为什么选择的后者

我为什么从Java转到AI大模型 在编程的海洋里&#xff0c;Java一直是我信赖的“小船”&#xff0c;载着我航行在代码的世界中。然而&#xff0c;随着行业的不断发展和变化&#xff0c;我开始感受到了一丝的迷茫和不安。我开始担心&#xff0c;随着技术的不断更新&#xff0c;Ja…