从0到1基于LangChain制作一个AI猫娘

news2024/11/13 3:47:53

前言:

        看到B站上的AI+Vtuber的项目落地了,就心血来潮想制作一个AI的猫娘供自己使用,顺便出一个简单的教程,跳过理论,直接实践,作者也还在学习摸索中,所以有错误可以直接在评论区指正。(基于windows平台)

第一步 下载anaconda和pycharm:

        著名的包管理器,这里就不再赘述如何安装,可以直接在CSDN上搜索安装教程。

第二步 打开pycharm并新建项目:

        新建一个项目,注意使用conda环境,版本最好选择python3.9。

        注意:文件名称不要取langchain,会出问题。

        他会自动创建环境,并下载好python3.9,在pycharm底部的终端,输入

conda install conda-forge::langchain
conda install conda-forge::langchain-openai
conda install conda-forge::langchain-community

来下载langchain及其依赖项。

第三步 前往网站注册申请API: 

        本文使用火山方舟的引擎(毕竟有免费额度)打开官网

         在API Key管理中创建自己的API,注意不要轻易泄露给他人。

        在在线推理里创建接入点,我用的是默认的模型来着,之后点击右边三个点进入API调用。

        选择通过API Key授权,选用第三方SDK,然后使用pip安装openai。

pip install --upgrade openai>=1.0

         回到pycharm,在顶部运行选项中选择编辑配置

        点击右边红框,再在弹出的窗口中添加名称“OPENAI_API_KEY”然后再复制你的API到变量里,以及其他两项,如下图:

 其中URL和MODEL来自火山给的测试中的这两行。

        可以用下面代码测试(AI的注释,凑合看吧):

import os  # 导入os模块,用于访问操作系统依赖的功能,如环境变量
from openai import OpenAI  # 从openai包中导入OpenAI类,用于创建API客户端

# 创建OpenAI客户端实例,使用环境变量中的API密钥和基础URL
client = OpenAI(
    api_key = os.environ.get("ARK_API_KEY"),  # 从环境变量中获取ARK_API_KEY作为API密钥
    base_url = os.environ.get("OPENAI_BASE_URL"),  # 从环境变量中获取OPENAI_BASE_URL作为API的基础URL
)

# 非流式请求:创建一个chat.completions请求,用于生成聊天回复
print("----- standard request -----")
completion = client.chat.completions.create(
    model = os.environ.get("LLM_MODELEND"),  # 从环境变量中获取LLM_MODELEND作为模型的端点ID
    messages = [  # 定义一个消息列表,包含系统消息和用户消息
        {"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},  # 系统消息,定义了AI助手的身份
        {"role": "user", "content": "常见的十字花科植物有哪些?"},  # 用户消息,提出了一个问题
    ],
)
# 打印出API返回的第一个选择中的消息内容,即AI助手的回答
print(completion.choices[0].message.content)

         输出:

         如果到这里都成功了,那就成功调用了一个AI!

结语:

        第一次写教程,有点粗糙,有什么问题可以直接在评论区指正。关于这个项目?随缘更新,或许得等我学更多的知识,才能继续推进,或许后面做完了可以找个做前端或者软件的帮我搞个APP?都说不定。

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

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

相关文章

Vue全栈开发旅游网项目(7)-搜索界面开发及其接口联调

1.搜索界面开发 1.1 模糊查询 文件地址:pycharm- class SightListView(ListView):paginate_by 5def get_queryset(self):#is_validTrue:表中is_valid列,有值则被查询出来query Q(is_validTrue)#1.获得热门景点is_hot self.request.GET.…

python识别ocr 图片和pdf文件

#识别图片 pip3 install paddleocr pip3 install paddlepaddle#识别pdf pip3 install PyMuPDF 重点:路径不能有中文,不然pdf文件访问不了 from paddleocr import PaddleOCR from rest_framework.response import Response from rest_framework.views im…

量化分析工具日常操作日记-5-通合科技

使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-5-军工-通合科技(300491)。 周末国家新政策,要大力支持军工行业,我用工具挖掘了两个低位股,供大家参考。通合科技(300491&#xff…

详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送

在C#中,SendMessage方法是一个强大的工具,它允许我们与Windows API交互,模拟键盘和鼠标事件。本文将详细介绍如何使用SendMessage方法来发送鼠标和键盘消息。 1. SendMessage方法概述 SendMessage是Windows API中的一个函数,它用…

CSS教程(三)- CSS 三大特性

1. 层叠性 介绍 多组CSS样式共同作用于一个元素,就会出现 覆盖(层叠) 另一个冲突的样式。 层叠原则 样式冲突:遵循就近原则(哪个样式离结构近,就执行哪个样式) 样式不冲突,就不会重…

CyclicBarrier使用详解及遇到的坑

上一篇文章讲的是关于是使用CountDownLatch实现生成年底报告遇到的问题,这个计数器和CyclicBarrier也有类似功能,但是应用场景不同。 一、应用场景 CountDownLatch: 有ABCD四个任务,ABC是并行执行,等ABC三个任务都执行完…

Java-I/O框架14:Properties集合及使用

视频链接:16.32 Properties使用(2)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tz4y1X7H7?spm_id_from333.788.player.switch&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p32 1.Properties集合 特性: 存储…

Windows下mysql数据库备份策略

Windows下mysql的增量备份和全量备份,并利用schtasks设置定时任务执行bat脚本。 一、备份要求 序号 备份类型 备份频次 备份时间 1 增量备份 每周一-每周六各一次 18:00:00 2 全量备份 每周日一次 18:00:00 二、备份方法 2.1增量备份 2.1.1准备工作…

架构师备考-概念背诵(软件工程)

软件工程 软件开发生命周期: 软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。软件开发时期:就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。软件运行和维护:就是…

【Linux】Linux入门实操——vim、目录结构、远程登录、重启注销

一、Linux 概述 1. 应用领域 服务器领域 linux在服务器领域是最强的,因为它免费、开源、稳定。 嵌入式领域 它的内核最小可以达到几百KB, 可根据需求对软件剪裁,近些年在嵌入式领域得到了很大的应用。 主要应用:机顶盒、数字电视、网络…

【Java项目】基于SpringBoot的【生鲜交易系统】

技术简介: 系统软件架构选择B/S模式、java技术和MySQL数据库等,总体功能模块运用自顶向下的分层思想。 系统简介: 考虑到实际生活中在生鲜交易方面的需要以及对该系统认真的分析,将系统权限按管理员,用户这两类涉及用户划分。 (…

AI Weekly『11月4-10日』: Anthropic发布Claude 3.5 Haiku,腾讯开源混元-Large模型!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…

贪心算法day3(最长递增序列问题)

目录 1.最长递增三元子序列 2.最长连续递增序列 1.最长递增三元子序列 题目链接:. - 力扣(LeetCode) 思路:我们只需要设置两个数进行比较就好。设a为nums[0],b 为一个无穷大的数,只要有比a小的数字就赋值…

vue实现图片无限滚动播放

本人vue新手菜鸡,文章为自己在项目中遇到问题的记录,如有不足还请大佬指正 文章目录 实现效果代码展示总结 因为刚接触vue,本想着看看能不能用一些element的组件实现图片的轮播效果,尝试使用过element-UI里的走马灯Carouse&#x…

[ 内网渗透实战篇-2 ] 父域子域架构的搭建与安装域环境判断域控定位组策略域森林架构配置信任关系

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

Follow软件的使用入门教程

开篇 看到很多兄弟还不知道怎么用这个当下爆火的浏览器!在这里简单给需要入门的小伙伴一些建议: 介绍 简单解释一下,RSS 意思是简易信息聚合,用户可以通过 RSS 阅读器或聚合工具自主订阅并浏览各个平台的内容源,不用…

esp32学习:用虫洞ESP32开发板,快速实现无线图传

我们的虫洞ESP32-S3-EYE开发板,能够完美运行esp who AI代码,所以实现无线图传那是非常容易的,我们先看看esp who代码库中examples目录: 里面有比较多的web例程,在这些例程下,稍作修改,就可以快速…

最新三维视觉下的扩散模型综述——Diffusion Models in 3D Vision: A Survey

目录 摘要 一、引言 二、扩散模型简介 A.扩散模型的介绍 B.扩散模型的数学基础 C.扩散模型的变体 D.三维视觉中的生成过程 三、三维视觉基础 A.三维表示 B.三维视觉中的深度学习方法 C.3D视觉中的挑战 四、三维扩散生成任务 A.无条件生成 B.图像到三维 C.文本到…

JavaSE:运算符 (学习笔记)

目录 一,算术运算符 【1】 共同点: 【2】 不同点: 二,关系运算符 三,逻辑运算符 2,&和&&的区别和联系 { |和||的区别和联系 }---两题类似 四,赋值运算符 五,拓展…

strtok函数详解

strtok函数 strtok 函数是一个字符串分割函数,用于将字符串分割成一系列的标记。这个函数通过一组分隔符字符来确定标记的边界,每次调用都会返回字符串中的下一个标记,并且将原始字符串中的分隔符替换为空字符‘\0’,从而实际上是…