当前位置: 首页 > news >正文

llm 基本案例实现

基于 Ollama本地部署调用方式

POST请求调用:

import requestsresponse = requests.post("http://localhost:11434/api/generate",json={"model": "qwen3","prompt": "你好,你是?","stream": False,}
)
print(response.json()['response'])

langchain 调用

from langchain_community.llms import Ollama# 配置远程 Ollama
llm = Ollama(base_url="http://localhost:11434",  # 远程地址model="qwen3",temperature=0.7
)print(llm.invoke("你好"))

在线调用llm 实现

from openai import OpenAI
import os
from dotenv import load_dotenv# 1. 加载 .env 文件
load_dotenv()  # 默认加载当前目录下的 .env 文件# 2. 读取 API Key
# 从当前.env 文件读取格式:  API_KEY=xxx
api_key = os.getenv("API_KEY")
client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "system", "content": "You are a helpful assistant"},{"role": "user", "content": "Hello"},],stream=Falseprint(response.choices[0].message.content)# 运行结果:
Hello! How can I assist you today? 😊

主要参数说明:

主要参数用法:

model 指定模型名称

messages 对话列表

role 角色, system,user, assistant, 默认 assistant

        system 系统角色 指导AI的行为

        eg: {"role": "system", "content": "你是一位严谨的数学老师,用简洁的语言回答问题"}

        user 用户角色 代表用户输入的指令,触发内容

        assistant 助手角色 记录AI之前的回复,在多轮对话中用到 content 消息内容

stream 是否流式输出,默认否

max_token 限制响应的最大token 数量

temperature (0-2) 值越高越有创意,值越低越保守

top_p (0,1) 采样参数, 值越大越有创意,值越小越保守

(temperature和top_p二者关系: 先从 temperature 调整所有词的概率分布,再通过top_p中截取最有可能的候选词集合) 

frequency_penalty (-2.0,2.0) 正值减少重复内容出现的概率

presence_penalty 正值增加谈论新话题的概率

 多轮对话实现:

response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "user", "content": "10+10等于多少"},],
)answer1 =  response.choices[0].message.contentresponse = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "user", "content": "10+10等于多少"},{"role": "user", "content": "再加10,输出总结果"},{"role": "assistant", "content": answer1},],
)
print(response.choices[0].message.content)

基本案例实现:

主要落尽: 检索本地文件文本 -> 增强信息提示 -> 大模型回答

from openai import OpenAI
import os
from dotenv import load_dotenv
from pathlib import Path# 1. 加载 .env 文件
load_dotenv()  # 默认加载当前目录下的 .env 文件# 2. 读取 API Key
api_key = os.getenv("API_KEY")
client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")# 1. 检索
def retrieval(query):context = ""# 读文件path_list= list(Path("../knowledge_file").glob('*.txt'))for path in  path_list:if path.stem in query:#找到相关内容context += path.read_text(encoding='utf-8')context += "\n"return context# 2. 结合上下文内容增强prompt提示
def augmented(query,context=""):if not context:return f"直接回答下面问题:{query}"prompt= f"""结合上下文信息来回答问题。如果不能判断,直接说:"我无法回答你的问题"上下文:{context}问题:{query}"""return prompt# llm 回答
def generation(prompt):response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "user", "content": prompt},],)print(response.choices[0].message.content)if __name__ == "__main__":query= "普通感冒"context=retrieval(query)prompt =augmented(query,context)response= generation(prompt)print(response)

http://www.lqws.cn/news/560791.html

相关文章:

  • 从OCR瓶颈到结构化理解来有效提升RAG的效果
  • C++ - 浅看vector源码
  • SpringBoot -- 以 jar 包运行(以及常见错误分析)
  • HarmonyOS NEXT仓颉开发语言实战案例:动态广场
  • Java面试题030:一文深入了解MySQL(2)
  • SpringMVC系列(六)(Restful架构风格(中))
  • Python助力自动驾驶:深度学习模型优化全攻略
  • 什么是 PoS(权益证明)
  • 如何用VS Code、Sublime Text开发51单片机
  • uni-app subPackages 分包加载:优化应用性能的利器
  • Geollama 辅助笔记:raw_to_prompt_strings_geo.py
  • IDEA2024.3 tomcat需要按两次停止按钮停止问题
  • 区块链使用那些技术?
  • 太速科技-670-3U VPX PCIe桥扩展3路M.2高速存储模块
  • Linux测试是否能联网
  • 大事件项目记录8-文章分类接口开发-文章分类列表
  • 2025年健康医疗大数据开放共享:现状、挑战与未来发展
  • 计算机操作系统(十七)内存管理
  • Grab×亚矩阵云手机:以“云端超级节点”重塑东南亚出行与数字生活生态
  • 用鸿蒙打造真正的跨设备数据库:从零实现分布式存储
  • 【AI智能体】Dify 核心组件从使用到实战操作详解
  • 信号处理学习——文献精读与code复现之TFN——嵌入时频变换的可解释神经网络(上)
  • 数据湖 vs 数据仓库:数据界的“自来水厂”与“瓶装水厂”?
  • 阿里 Qwen3 模型更新,吉卜力风格get
  • 对话式数据分析与Text2SQL Agent产品可行性分析思考
  • 安卓中静态和动态添加子 View 到容器
  • Zotero 7 插件:翻译与护眼主题
  • 如何快速学习一门新编程语言
  • 使用asyncio构建高性能网络爬虫
  • Vue 项目中 Excel 导入导出功能笔记