首页 > 编程问答 >Langchain、Ollama 和 Llama 3 提示和响应

Langchain、Ollama 和 Llama 3 提示和响应

时间:2024-08-06 03:40:47浏览次数:8  
标签:python langchain llama ollama

目前,我正在返回多个响应,或者模型不知道何时结束响应,并且似乎在响应中重复系统提示(?)。我只想得到一个回复​​。我的设置非常简单,所以我想我缺少实现细节,但是我该怎么做才能只返回单个响应?

from langchain_community.llms import Ollama

llm = Ollama(model="llama3")

def get_model_response(user_prompt, system_prompt):
    prompt = f"""
        <|begin_of_text|>
        <|start_header_id|>system<|end_header_id|>
        { system_prompt }
        <|eot_id|>
        <|start_header_id|>user<|end_header_id|>
        { user_prompt }
        <|eot_id|>
        <|start_header_id|>assistant<|end_header_id|>
        """
    response = llm.invoke(prompt)
    return response

问题出在使用 Langchain 与 Ollama 进行交互的方式,以及如何构建提示。没有明确指示 Ollama 在哪里停止生成,因此它会继续运行,直到达到其最大令牌限制或遇到“结束序列”为止。

让我们分解一下如何解决此问题:

1. 停止序列:

  • Ollama 和类似的语言模型依赖于停止序列来了解何时完成生成。可以通过在提示中包含明确的停止序列来实现。停止序列可以像 \n 一样简单,也可以更复杂,例如 \n### &lt;|endoftext|&gt; ,具体取决于的模型和用例。

2. 调整 Langchain 集成:

  • 检查 invoke generate Langchain 的 Ollama 类可能具有不同的方法来处理响应。虽然 invoke 可能会返回原始模型输出,但可能有一个 generate 方法或类似方法来处理停止序列并返回更精细的响应。查阅 Langchain 文档 以获取有关的 Langchain 和 Ollama 版本的特定说明。

修改后的代码:

from langchain_community.llms import Ollama

llm = Ollama(model="llama3")
STOP_SEQUENCE = "\n###"  # 选择一个适合模型的停止序列

def get_model_response(user_prompt, system_prompt):
    prompt = f"""
        &lt;|begin_of_text|&gt;
        &lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;
        {system_prompt}
        &lt;|eot_id|&gt;
        &lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;
        {user_prompt}
        &lt;|eot_id|&gt;
        &lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;
    """
    # 包含停止序列 - 可能需要调整如何将其传递到的 llm.invoke/generate 函数
    response = llm.invoke(prompt, stop=[STOP_SEQUENCE]) 
    return response

其他提示:

  • 实验停止序列: 不同的停止序列可能对不同的模型和任务产生不同的影响。尝试几个选项以找到最适合情况的选项。
  • 温度参数: 如果发现的模型仍然产生重复的输出,请尝试降低 Langchain 的 Ollama 设置中的“温度”参数。这会使生成的文本更加集中和确定性。
  • 最大长度: 设置对模型响应的最大长度限制可以防止过度冗长的输出。

通过实施这些调整,应该能够更准确地控制 Ollama 的响应,确保它生成单个、简洁的答案,而不是多次重复提示或继续生成超出必要的内容。

如果能提供正在使用的特定 Ollama 模型和 Langchain 版本,我将能够提供更具体的指导。

标签:python,langchain,llama,ollama
From: 78429932

相关文章

  • 【香橙派系列教程】(七)香橙派下的Python3安装
    【七】香橙派下的Python3安装为接下来的Linux图像识别智能垃圾桶做准备。图像处理使用京东SDK只支持pyhton和Java接口,目的是引入C语言的Python调用,感受大厂做的算法bug此接口是人工智能接口,京东识别模型是通过训练后的模型,精准度取决于训练程度,人工智能范畴在常规嵌入式......
  • vnpy,一个不可思议的Python库!
    vn.py是一个开源的Python交易编程框架,旨在帮助程序员快速搭建属于自己的量化交易平台。该框架支持股票、期货、外汇等多种金融产品的交易,提供了从数据获取、策略开发到交易执行的全流程支持。如何安装vnpy首先,要使用vnpy,您需要通过Python的包管理工具pip来安装它。以下......
  • Python回溯算法
    回溯算法回溯算法是一种系统的搜索算法,用于解决诸如排列组合、子集生成、图的路径、棋盘问题等问题。其核心思想是通过递归尝试各种可能的解决方案,遇到不满足条件的解时则回退(回溯),继续尝试其他可能性,直到找到所有的解决方案或确认无解。主要步骤:选择路径:在当前步骤选择一个可......
  • [python]使用gunivorn部署fastapi服务
    前言Gunicorn是一种流行的WSGIHTTP服务器,常用于部署Django和Flask等PythonWeb框架程序。Gunicorn具有轻量级、高稳定性和高性能等特性,可以轻易提高PythonWSGIApp运行时的性能。基本原理Gunicorn采用了pre-fork模型,也就是一个工作进程和多个worker进程的工作模式。在这个模......
  • python十六进制编辑器
    源代码:importtkinterastkfromtkinterimportfiledialogimportstructimportbinasciiimportosclassHexEditor:def__init__(self,master):self.master=masterself.master.title("十六进制编辑器")self.master.configure(bg......
  • python项目学习 mediapipe手势识别 opencv可视化显示
    importcv2importmediapipeimportnumpydefget_angle(vector1,vector2):#角度计算angle=numpy.dot(vector1,vector2)/(numpy.sqrt(numpy.sum(vector1*vector1))*numpy.sqrt(numpy.sum(vector2*vector2)))#cos(angle)=向量的点乘/向量的模angle=nump......
  • 【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏
    摘要气象数据分析在各行各业中扮演着重要的角色,尤其对于农业、航空、海洋、军事、资源环境等领域。在这些领域中,准确的气象数据可以对预测未来的自然环境变化和采取行动来减轻负面影响的决策起到至关重要的作用。本系统基于PythonFlask框架,通过对气象数据的分析和处理来提供......
  • Python-MNE全套教程(官网翻译)-入门01:概述篇
    目的以牺牲深度为代价进行入门学习,简易学习基本方法开始导入相关库:#License:BSD-3-Clause#CopyrighttheMNE-Pythoncontributors.importnumpyasnpimportmne加载数据MNE-Python数据结构式基于fif格式的,但是对于其他格式也有阅读方法,如https://mne.tools/s......
  • Python-MNE全套教程(官网翻译)-入门05:关于传感器位置
    本教程描述了如何读取和绘制传感器位置,以及MNE-Python如何处理传感器的物理位置。像往常一样,我们将从导入我们需要的模块开始:frompathlibimportPathimportmatplotlib.pyplotaspltimportnumpyasnpimportmne关于montage和layout(蒙太奇和传感器布局)montage......
  • Codeforces Round 963 (Div. 2) A - C 详细题解(思路加代码,C++,Python) -- 来自灰名
    比赛链接:Dashboard-CodeforcesRound963(Div.2)-Codeforces之后有实力了再试试后面的题目,现在要做那些题,起码要理解一个多小时题目A:链接:Problem-A-Codeforces题目大意理解:        极少数不考翻译能读懂的cf题目(bushi)每个测试用例第一行一个n,......