Skip to content

Commit

Permalink
Merge pull request OpenInterpreter#1397 from OpenInterpreter/development
Browse files Browse the repository at this point in the history
Robuster Server
  • Loading branch information
KillianLucas authored Aug 14, 2024
2 parents 818744d + 39624a7 commit 142d6c4
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 59 deletions.
116 changes: 100 additions & 16 deletions docs/legal/license.mdx
Original file line number Diff line number Diff line change
@@ -1,33 +1,117 @@
**Privacy Policy for Open Interpreter**
---
title: Licenses
description: By using Interpreter, you agree to our Privacy Policy and Terms of Service
---

\n

# Interpreter Privacy Policy

Last updated: August 13, 2024

Open Interpreter, Inc. ("we," "our," or "us") is committed to protecting your privacy. This Privacy Policy explains how we collect, use, and safeguard your information when you use our AI desktop application, Interpreter ("the Application").

## 1. Information We Collect

We collect the following information:

a) Personal Information:
- Name
- Email address

*Introduction*: This Privacy Policy applies to the Open Interpreter app, operated by Open Interpreter, Inc. By using our app, you agree to the collection and use of information in accordance with this policy.
b) Usage Information:
- Conversations with the AI chatbot
- Code generated during use of the Application

*Information Collection and Use*: We collect several types of information for various purposes to provide and improve our service to you. This may include, but is not limited to, personal data such as email address, first name and last name, usage data, and cookies.
## 2. How We Use Your Information

*Data Use*: The data collected will be used to provide and maintain the service, notify you about changes to our service, provide customer support, monitor the usage of the service, and detect, prevent, and address technical issues.
We use the collected information to:

*Data Sharing*: Your information, including personal data, may be transferred to — and maintained on — computers located outside of your state, province, country, or other governmental jurisdiction where the data protection laws may differ from those of your jurisdiction.
a) Provide and improve our services
b) Communicate with you about your account or the Application
c) Improve our underlying AI model

*Security*: The security of your data is important to us but remember that no method of transmission over the Internet or method of electronic storage is 100% secure.
## 3. Data Anonymization

*Changes to This Privacy Policy*: We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.
All conversations and generated code are anonymized before being used to improve our AI model. However, please be aware that if you explicitly instruct the AI to include personal identifiable information (PII) in the generated code, such information may be captured.

*Contact Us*: If you have any questions about this Privacy Policy, please contact us.
## 4. Data Security

We implement appropriate technical and organizational measures to protect your personal information. However, no method of transmission over the Internet or electronic storage is 100% secure.

## 5. Your Rights

You have the right to access, correct, or delete your personal information. Please contact us at [email protected] for any data-related requests.

## 6. Changes to This Privacy Policy

We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page and updating the "Last updated" date.

## 7. Contact Us

If you have any questions about this Privacy Policy, please contact us at [email protected].

By using Interpreter, you agree to the collection and use of information in accordance with this Privacy Policy.

---

**Terms and Conditions for Open Interpreter**
# Interpreter Terms of Service

Last updated: August 13, 2024

Please read these Terms of Service ("Terms", "Terms of Service") carefully before using the Interpreter desktop application (the "Service") operated by Open Interpreter, Inc. ("us", "we", or "our").

## 1. Acceptance of Terms

By accessing or using the Service, you agree to be bound by these Terms. If you disagree with any part of the terms, then you may not access the Service.

## 2. Description of Service

Interpreter is an AI-powered desktop application that allows users to interact with an AI chatbot to write and execute code.

## 3. User Responsibilities

By using our Service, you agree to:

a) Review ALL code generated by Interpreter before execution.
b) Grant explicit permission before any code is executed on your system.
c) Understand the implications of the code you choose to execute.
d) Use the Service in compliance with all applicable laws and regulations.

## 4. Safety Measures

We have implemented the following safety measures:

a) We employ LakeraGuard, an industry-leading solution, to assess potential harm in generated code.
b) Our custom judge layer provides explanations of what the code is intended to do.
c) You will always be asked for permission before any code is executed.

## 5. Assumption of Risk

By using Interpreter, you acknowledge and accept the following risks:

a) The application may generate code that, if executed, could alter or delete files on your system.
b) While we have implemented safety measures, the AI may occasionally generate code with unintended consequences.
c) In rare cases, the application might generate code that, if executed, could potentially expose sensitive information.

## 6. Limitation of Liability

To the fullest extent permitted by law, Open Interpreter, Inc. shall not be liable for any direct, indirect, incidental, special, consequential, or exemplary damages resulting from your use of the Service or any code generated or executed through the Service.

## 7. Indemnification

You agree to indemnify and hold harmless Open Interpreter, Inc., its officers, directors, employees, and agents from any claims, damages, losses, liabilities, and expenses (including legal fees) arising out of or related to your use of the Service or any code generated or executed through the Service.

*Acceptance*: By accessing or using the Open Interpreter app, you agree to be bound by these Terms and Conditions.
## 8. Modifications to Terms

*Use License*: Permission is granted to temporarily download one copy of Open Interpreter for personal, non-commercial transitory viewing only.
We reserve the right to modify these Terms at any time. Continued use of the Service after changes constitutes acceptance of the modified Terms.

*Disclaimer*: The app is provided on an 'AS IS' basis. Open Interpreter, Inc. makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties including, without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights.
## 9. Governing Law

*Limitation of Liability*: In no event shall Open Interpreter, Inc. or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use the Open Interpreter app.
These Terms shall be governed by and construed in accordance with the laws of [Your Jurisdiction], without regard to its conflict of law provisions.

*Modifications*: Open Interpreter, Inc. may revise these terms of service for the app at any time without notice.
## 10. Contact Us

*Governing Law*: These terms and conditions are governed by and construed in accordance with the laws of Washington, USA and you irrevocably submit to the exclusive jurisdiction of the courts in that State.
If you have any questions about these Terms, please contact us at [email protected].

*Contact Us*: For any questions regarding these Terms and Conditions, please contact [email protected].
By using Interpreter, you acknowledge that you have read, understood, and agree to be bound by these Terms of Service.
1 change: 0 additions & 1 deletion docs/legal/privacy-policy.mdx

This file was deleted.

1 change: 0 additions & 1 deletion docs/legal/usage-policy.mdx

This file was deleted.

65 changes: 24 additions & 41 deletions interpreter/core/llm/run_tool_calling_llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,15 +247,35 @@ def run_tool_calling_llm(llm, request_params):
else:
yield {"type": "message", "content": delta["content"]}

if (
accumulated_deltas.get("function_call")
and "name" in accumulated_deltas["function_call"]
and (
accumulated_deltas["function_call"]["name"] == "python"
or accumulated_deltas["function_call"]["name"] == "functions"
)
):
if language is None:
language = "python"

# Pull the code string straight out of the "arguments" string
code_delta = accumulated_deltas["function_call"]["arguments"][len(code) :]
# Update the code
code = accumulated_deltas["function_call"]["arguments"]
# Yield the delta
if code_delta:
yield {
"type": "code",
"format": language,
"content": code_delta,
}

if (
accumulated_deltas.get("function_call")
and "arguments" in accumulated_deltas["function_call"]
and accumulated_deltas["function_call"]["arguments"]
):
if (
"name" in accumulated_deltas["function_call"]
and accumulated_deltas["function_call"]["name"] == "execute"
):
if "arguments" in accumulated_deltas["function_call"]:
arguments = accumulated_deltas["function_call"]["arguments"]
arguments = parse_partial_json(arguments)

Expand Down Expand Up @@ -285,43 +305,6 @@ def run_tool_calling_llm(llm, request_params):
if llm.interpreter.verbose:
print("Arguments not a dict.")

# THESE NEED TO BE UPDATED FOR TOOL CALLING!!!!
# Common hallucinations
elif "name" in accumulated_deltas["function_call"] and (
accumulated_deltas["function_call"]["name"] == "python"
or accumulated_deltas["function_call"]["name"] == "functions"
):
if llm.interpreter.verbose:
print("Got direct python call")
if language is None:
language = "python"

if language is not None:
# Pull the code string straight out of the "arguments" string
code_delta = accumulated_deltas["function_call"]["arguments"][
len(code) :
]
# Update the code
code = accumulated_deltas["function_call"]["arguments"]
# Yield the delta
if code_delta:
yield {
"type": "code",
"format": language,
"content": code_delta,
}

else:
raise (Exception("Can't parse tool output: " + str(accumulated_deltas)))
# If name exists and it's not "execute" or "python" or "functions", who knows what's going on.
if "name" in accumulated_deltas["function_call"]:
yield {
"type": "code",
"format": "python",
"content": "ERROR",
}
return

if os.getenv("INTERPRETER_REQUIRE_AUTHENTICATION", "False").lower() == "true":
print("function_call_detected", function_call_detected)
print("accumulated_review", accumulated_review)
Expand Down

0 comments on commit 142d6c4

Please sign in to comment.