[HN Gopher] Show HN: Next.js ChatGPT - Responsive chat applicati...
       ___________________________________________________________________
        
       Show HN: Next.js ChatGPT - Responsive chat application powered by
       GPT-4
        
       Author : enricoros
       Score  : 96 points
       Date   : 2023-03-19 10:02 UTC (13 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | [deleted]
        
       | yayr wrote:
       | nice, maybe you can make the initializing prompts in
       | 
       | https://github.com/enricoros/nextjs-chatgpt-app/blob/main/pa...
       | 
       | transparent to the user and even changeable by them.
        
       | enricoros wrote:
       | What does it take to make a basic ChatGPT-like frontend, with
       | code highlighting, run in sandbox, drop-files, and 'acting' in
       | prompts? Clone away and enjoy. First time poster
        
         | anonzzzies wrote:
         | Thanks, it is good :) You don't need the serverside though; you
         | can just call openai apis straight from the client. Makes
         | things easier!
        
           | yodon wrote:
           | If you call the openai API's straight from the FrontEnd, you
           | are likely leaking your api keys to visitors who can then use
           | your api keys (and api key limits) for their own purposes.
        
             | anonzzzies wrote:
             | Nah, you ask them to enter their own; if you use yours,
             | then yes, only use backend. In this case, the author is not
             | using his, you have to bring your own, so frontend is fine.
        
           | capableweb wrote:
           | It seems to support both? First it tries to load the key from
           | a environment variable, and if it cannot, it'll ask for it
           | client-side.
           | 
           | None the less, if you're building a project for others, you
           | most likely don't want the secret key to be public, which
           | it'd be if you embed it in the client-side code.
        
             | anonzzzies wrote:
             | > It seems to support both?
             | 
             | Ah, only saw the api one!
        
         | justplay wrote:
         | like https://www.chatwithme.chat ?
        
           | behnamoh wrote:
           | This hijacks the Back button on Chrome. Not trustworthy.
        
         | nico wrote:
         | What do you mean by "acting"?
         | 
         | That it pretends to be a Scientist? Or that it can perform
         | actions (like sending an email or searching the web)?
         | 
         | If the latter, do you have more info/docs about it? Didn't see
         | it on the roadmap.
        
           | capableweb wrote:
           | You can kind of program something around the API to make it
           | able to perform actions. That's the way I'm guessing
           | Microsoft did it with Bing. Here is an example:
           | 
           | System prompt:                   - You are a text-based AI
           | delegates to other AIs.         - You only respond in JSON
           | with two keys `delegate_to` and `parameters`.         -
           | `delegate_to` defines what other AI you should delegate to.
           | - `parameters` are parameters to send to that AI.         -
           | Here is the list of possible delegates         - delegate_to:
           | email_ai, parameters: $to $subject $body, used for sending
           | emails         - delegate_to: calendar_ai, parameters: $time,
           | $date, $title, used for creating events in a calendar
           | - delegate_to: search_ai, parameters: $search-term         -
           | Be creative and helpful.         - Your goal is to take user
           | input and successfully delegate the task you receive from the
           | user to the correct AI.         - Your initial message to the
           | user should welcome them and ask them what you can do for
           | them.
           | 
           | Example conversation:                   > {"message":
           | "Welcome! I'm your AI assistant. What can I do for you
           | today?"}                  > User: Send email to
           | john@example.com asking if he wants to have dinner tonight
           | {           "delegate_to": "email_ai",
           | "parameters": {             "to": "john@example.com",
           | "subject": "Dinner Invitation",             "body": "Hi John,
           | would you like to have dinner together tonight? Let me know
           | your thoughts. Best regards."           }         }
           | 
           | Then you'd make your program read the JSON messages it
           | generates and perform the correct action.
        
             | nico wrote:
             | Nice. How would you go about providing a dynamic list of
             | delgates? Could it work to just give one delegate that can
             | provide a list of delegates with a description of the
             | actions they can perform (then that delegate can query a db
             | and return a list)?
             | 
             | Re-reading, I'm guessing the prompt could also be
             | dynamically generated to include the most relevant
             | delegates.
        
               | behnamoh wrote:
               | At that point we're basically back to the `AI is just
               | nested if-else expressions` story. The only difference is
               | that now there is a language reader on top that
               | understands the semantic of your language. But actors (or
               | agents in LangChain lingo) are just if-else. The tools
               | you connect them to must be developed separately.
        
               | sprobertson wrote:
               | > the prompt could also be dynamically generated to
               | include the most relevant delegates
               | 
               | Yup that's how I'm doing it - the system prompt is re-
               | generated for every request, and that includes getting a
               | list of available delegates and the arguments they
               | accept. I only have 10 so I'm just listing all of them,
               | but if you had some huge number you could combine that
               | with embeddings / vector lookup.
        
       | tonyoconnell wrote:
       | Here's one made with Astro https://github.com/ddiu8081/chatgpt-
       | demo There's a fork in Chinese somewhere with loads more
       | features.
        
       | phil42 wrote:
       | But I need an GPT-4 api key for that, right? The normal API keys
       | don't work?
        
         | capableweb wrote:
         | The keys for GPT3 (`GPT-3.5-turbo` is the actual model ID) is
         | the same as for GPT-4. You define the model when you make the
         | request to the API.
        
           | layer8 wrote:
           | Does this work if you only have GPT-4 access via a ChatGPT
           | subscription (ChatGPT Plus)?
        
             | fredliu wrote:
             | It doesn't. Even if you have ChatGPT Plus, the key you have
             | only supports 3.5 unless you are explicitly given the gpt-4
             | key.
        
               | fredliu wrote:
               | There seems to be already a PR for adding 3.5 support.
               | The community and speed of change in this field is mind
               | blowing!
        
               | capableweb wrote:
               | Oh yeah, changing 33 lines is truly revolutionary!
        
               | capableweb wrote:
               | It's true that you need explicit access to the GPT-4 to
               | use the API, but again, it's not a different key. I'm
               | using the same API key for accessing `gpt-3.5-turbo` as I
               | use for `gpt-4`.
        
         | tonyoconnell wrote:
         | Seems to fall back to GPT 3 if you haven't got access to GPT 4
         | API yet
        
           | fredliu wrote:
           | hmm... doesn't seem to be the case, when I provided my gpt-3
           | turbo key the error message indicates the gpt-4 model doesn't
           | exist.
        
             | capableweb wrote:
             | Change this https://github.com/enricoros/nextjs-chatgpt-
             | app/blob/466a366... to say "gpt-3.5-tubo" and it should
             | work for you
        
               | trendoid wrote:
               | I updated the model in that file, deployed again using
               | Vercel but still same error.
        
               | capableweb wrote:
               | It seems like it's setting gpt-4 here as well:
               | https://github.com/enricoros/nextjs-chatgpt-
               | app/blob/466a366...
               | 
               | But come on, read through the source, look for the issue,
               | I'm sure you can track down at least something :)
        
               | trendoid wrote:
               | Sorry, as soon as posted my comment, I looked again and
               | found the other occurrence. It's quite late here and I
               | just followed your advice blindly :)
               | 
               | Works now.
        
       ___________________________________________________________________
       (page generated 2023-03-19 23:02 UTC)